OhMyScheduler - 强大的分布式调度与计算框架

2020-06-12 08:39:58 +08:00
 tjq

简介

OhMyScheduler 是基于 Akka 架构的新一代分布式调度与计算框架,支持 CRON 、API 、固定频率、固定延迟四种调度策略,提供工作流( DAG )来编排任务解决依赖关系,使用简单,功能强大,文档齐全,能够让你轻松完成作业的调度与繁杂任务的分布式计算。

主要功能特性

适用场景

同类产品对比

传送门

项目地址: https://github.com/KFCFans/OhMyScheduler

文档地址: https://www.yuque.com/ohmyscheduler/guidence/ztn4i5

在线使用: https://www.yuque.com/ohmyscheduler/guidence/hnbskn

觉得还不错的话,可以点个 Star 支持一下~

5146 次点击
所在节点    分享创造
24 条回复
0312birdzhang
2020-06-12 08:46:14 +08:00
quartz 不支持分布式任务?不对吧,人家可以用数据库来做分布式
crystom
2020-06-12 08:48:34 +08:00
跟 airflow 有什么区别
tjq
2020-06-12 08:58:28 +08:00
@0312birdzhang TAB 名称写错了,我应该写“分布式计算”的,也就是任务派发后只有一台机器能执行还是有多台机器能共从参与运算~
感谢指正~
tjq
2020-06-12 09:22:12 +08:00
@crystom 立足点和面向的领域不同。

像 airflow 、dolphinscheduler 这类框架主要面向大数据处理领域,其核心需求是按照规定流程( DAG )跑一堆脚本去完成一些数据任务。因此这类框架提供的处理器一般都很简单(比如 Airflow 其实就是用 bash 去执行 shell 、python 脚本或者用 HTTP 去触发),其主要功能或者亮点在于如何生成并发布数据处理方法(像 dolphinscheduler (基于 airflow 二次开发的框架)内置了 MySQL 、Spark 、Hive 、Hadoop 等等各种数据源客户端,用户可以直接在线写 SQL 、HQL 等完成数据擦操作)。

而 OhMyScheduler 最初是面向业务应用设计的,核心需求是解决那些需要通过代码做一些复杂的数据处理的任务的调度,同时在计算量很大单机难以支撑的情况下提供分布式计算能力。这个场景显然是 airflow 系无法解决的。

简单概括,airflow 系的主战场是跑脚本跑 SQL 类任务,而 OhMyScheduler 的主战场是业务相关的需要写代码完成的计算任务,当然,也顺手支持脚本的运行。
kifile
2020-06-12 10:33:29 +08:00
感觉左侧栏目有些多,很多页面可以融合在一起更高效。
zuston
2020-06-12 10:51:30 +08:00
高可用怎么实现的?高性能体现在什么地方?文档中没找到设计架构图
tjq
2020-06-12 10:57:26 +08:00
@kifile emmm 主要是功能比较强大和丰富,就有那么多栏目了哈哈哈~

用熟了其实还好,毕竟是面向开发者的后台,而不是面向普通用户的前端~

感谢建议~
tjq
2020-06-12 10:59:03 +08:00
@zuston 通过集群部署+服务发现实现的。

原理分析性的文档后续会补上去,目前还在推广阶段,光写用户文档就已经很费事费力了 hhh
zuston
2020-06-12 13:27:18 +08:00
@tjq 架构说明还是很重要的
tjq
2020-06-12 13:59:32 +08:00
@zuston 确实,这几天我抽时间好好弄个架构图出来~
感谢您的建议哈~
Suclogger
2020-06-12 14:53:38 +08:00
hhh,冲着项目题图给个星
tjq
2020-06-12 15:54:34 +08:00
@Suclogger 哈哈哈昨天群里的老哥让我赶紧换个 LOGO,说这样上不了生产 hhh
tlday
2020-06-13 14:33:57 +08:00
说实话,我觉得名字和 LOGO 都可以换换...假如有心把差异化做大项目做出来的话,换个单个单词的名字要好得多。
hantsy
2020-06-14 09:16:36 +08:00
在 Spring 开发中,好久以前开始用 JDK 自带的 Timer Task 代替了,更简单,无需配置。绝大部分时间我们用不到 Quartz 的一些高级功能。
hantsy
2020-06-14 09:18:24 +08:00
谈到任务的,定时任务很多是批处理,Spring 中一些任务都是 Delegate 到 Spring Batch 中去执行。Timer/Scheduler 只是一个定时触发器而已。
hantsy
2020-06-14 09:19:56 +08:00
我是搞不定国内对这种带界面的东西都这么大兴趣,什么各种 Admin 界面,什么用户 CRUD,什么任务管理界面。
tjq
2020-06-14 17:22:17 +08:00
@tlday 收到了太多类似的反馈,前几天和群友认真讨论了一下,就决定改名了。
目前把项目名称改成了 PowerJob (灵感来源于微软的 PowerShell ),LOGO 也换了。
有兴趣可以去 GitHub 再看看哈哈~
tjq
2020-06-14 17:27:49 +08:00
@hantsy Java 和 Spring 自带的定时调度功能非常有限,用起来也十分不方便,你应该是还没有接触到需要分布式调度的业务场景,接触到后你就会发现意义所在。

带界面只是方便用户使用,在线监控、运维都是能极大提升开发效率的。任何一个框架只有足够简单易用才能吸引别人去使用~
hantsy
2020-06-14 18:15:54 +08:00
国内这些东西太多了,没兴趣。不管是 Spring 还是 Java EE/Jakarta EE,都是可以用 JDK 自带的实现 cron, fixed initial, interval 定时任务等等。

运维用界面都是比较 Low 才会用。高级 DevOps 都脚本语言和各种开放 API 操作,写一些 Scripts 结合 CI 触发机制,实现完全自动化。系统运行监控中界面算是一部分功能,但是一个系统在运行过程中,更重要的是要有很好的预警和有效的通知机制,而不是出现什么问题去打开界面查看。
tjq
2020-06-16 08:58:48 +08:00
@hantsy 你没有接触过需要这种作业调度框架的场景,所以想像不到意义。

你口口声声说 JDK 自带的调度机制也只是在单机的情况下能够完成部分功能。举个例子,在整个集群中我只需要某台机器去执行某个任务,通过 JDK 自带的 Scheduler 怎么实现,用分布式锁?那不就是额外的中间件成本和开发成本吗?需求再变态点,我需要指定集群中具体的某几台机器去执行某个任务,这个 JDK 自带的 Scheduler 又怎么实现呢?

运维界面你看不上也可以不用。你完全可以通过我提供的 OpenAPI 操作整个系统,像 AWS 这类不也是同时提供网页和 CLI 工具吗?难不成你给 AWS 提供 advice 说用户界面太 low 啦,我们都是 CLI 党,强烈建议下架 AWS 控制台?

预警和有效的通知机制当然是有的,但这和前端界面完全不是一个层面的东西。就像 AWS 的控制台和 AWS 实例报警通知,是一回事吗?

最后,本框架的主题是调度和分布式计算,主打功能是分布式计算,你一直纠结在前端页面上也是让我没想到的......

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

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

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

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

© 2021 V2EX