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

2021-01-18 00:30:51 +08:00
 Brentwans
不一定是叫事件驱动任务流框架,我实在没法给出个准确的工具类型的名称。
需求是这样的。当前数仓里表会从生产库中的先导进来,然后各种 join,汇总,过滤,排序一系列操作后又产生一堆表。这一堆表结合各个业务部门需求,可能又各种计算后再次产生一堆表。

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

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

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

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

这部分觉得功能不和公司业务绑定应该有类似工具,就不想重复造轮子了。但是找了好些,要么感觉是个小项目不靠谱,要么就不是以消息为基础,而是预先构造一个执行对象,把每一步设定好开始各个执行步骤,基于消息的可以单机跑,但是这个预先的执行对象的单机不太好控制整个集群中任务。
拜托各位,有没有什么成熟的框架或者工具推荐的。
619 次点击
所在节点    问与答
3 条回复
bugFactory
2021-01-18 10:36:11 +08:00
按我的理解,你这里需要一个更好的调度系统
Brentwans
2021-01-18 11:11:15 +08:00
@bugFactory 有轮子推荐一下吗?
bugFactory
2021-01-18 14:20:09 +08:00
@Brentwans xxl-job 好像就可以,定时调度加事件触发

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/745754

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX