V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Brentwans
V2EX  ›  问与答

推荐一个 Java 事件驱动任务流框架

  •  
  •   Brentwans · 2021-01-18 00:30:51 +08:00 · 613 次点击
    这是一个创建于 1193 天前的主题,其中的信息可能已经有所发展或是发生改变。
    不一定是叫事件驱动任务流框架,我实在没法给出个准确的工具类型的名称。
    需求是这样的。当前数仓里表会从生产库中的先导进来,然后各种 join,汇总,过滤,排序一系列操作后又产生一堆表。这一堆表结合各个业务部门需求,可能又各种计算后再次产生一堆表。

    表和表之间有比较复杂的血缘关系。每天晚上都会把需要的数据从生产库抽到数仓中后。然后用 spark 把按照每个表的创建时间的顺序,执行各种计算,产生那一堆堆的表。所以的一切都是按照时间来傻傻执行的,比如导数 1 点,那么安全起见,1 点半开始 spark 的任务运行,然后任务是按照创建时间顺序来调度运行的。

    这样的结构问题逐渐显现。随着数据增多,和数仓中各种表越来越多。spark 生成的时间现在一个晚上快生成不完了。其中主要问题是,有大量的表是无需计算的被计算了。比如销售部门的一张表,是由仓储部门的表各种计算产生的,而这张仓储部门的表一周才更新一次,所以销售部门的表一周一次计算就够了。但是现在系统是傻傻的每天都执行,把所有数仓中的表都计算一遍,这表多了自然就扛不住了。

    目前表的血缘关系已经有了。需要的是,仓储表开始往数仓导数并且成功后,触发计算并产生对应销售部门的表,这个表又计算成功后,接着触发下面的依赖表。

    此外每个操作(导入数据,执行 spark 各种计算等)对应各个步骤的事件也都有了。现在需要一个类似 iPhone 上面快捷指令或者 mas 上面自动操作那样的执行框架,根据血缘关系进行编排,然后根据各个事件来执行对应的表计算。

    这部分觉得功能不和公司业务绑定应该有类似工具,就不想重复造轮子了。但是找了好些,要么感觉是个小项目不靠谱,要么就不是以消息为基础,而是预先构造一个执行对象,把每一步设定好开始各个执行步骤,基于消息的可以单机跑,但是这个预先的执行对象的单机不太好控制整个集群中任务。
    拜托各位,有没有什么成熟的框架或者工具推荐的。
    bugFactory
        1
    bugFactory  
       2021-01-18 10:36:11 +08:00
    按我的理解,你这里需要一个更好的调度系统
    Brentwans
        2
    Brentwans  
    OP
       2021-01-18 11:11:15 +08:00
    @bugFactory 有轮子推荐一下吗?
    bugFactory
        3
    bugFactory  
       2021-01-18 14:20:09 +08:00
    @Brentwans xxl-job 好像就可以,定时调度加事件触发
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2880 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 00:24 · PVG 08:24 · LAX 17:24 · JFK 20:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.