Q:PowerJob与DolphinScheduler比有什么不同吗?或者优势?

A: 立足点和面向的领域不同。

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

而 PowerJob 最初是面向业务应用设计的,核心需求是解决那些需要通过代码做一些复杂的数据处理的任务的调度,同时在计算量很大单机难以支撑的情况下提供分布式计算能力。也就是说PowerJob面向的是需要你自己写代码干活的场景。

简单概括,airflow 系的主战场是跑脚本跑 SQL 类任务,而 PowerJob 的主战场是业务相关的需要写代码完成的计算任务,当然,也顺手支持脚本的运行。


Q:请问,有没有通过API增删改查执行的操作?

A:OpenAPI就是为此而生的。OpenAPI在Http的基础上进行了封装,提供规范的接口完成任务的管理与运维。

Q:Ignite也支持分布式计算,请问这个项目有什么优势?

A:从本质上讲,PowerJob是一个具有分布式计算能力的任务调度框架,而Ignite是一个分布式计算框架,前者立足于任务调度(虽然本项目的亮点是分布式计算没错啦…),后者立足于大数据计算,两者立足点不同。

从分布式计算的角度来讲,Ignite确实具备全部PowerJob的功能(毕竟人家是Apache顶级项目...),PowerJob-Worker集群可以看成嵌入式的Ignite集群,整体对外提供服务。两者虽然表面上功能有所重合,但背后的设计理念是截然不同的。

Ignite本质上是由分布式内存SQL数据库发展而来的分布式计算平台,它解决的问题更偏向于大数据处理(Spark、Hadoop之类),因此对于传统的Java项目并不是非常友好,比如官方推荐的部署模式是建立独立的Ignite集群负责计算,业务应用只负责提交代码。再比如获取各种资源(Spring Bean)都需要先注入Ignite中,这对于依赖繁杂的业务来说是非常痛苦的。

而OhMyScheduler就是面向业务应用设计的,从示例代码中也能看出,开发PowerJob的处理器是没有任何额外的成本的,想要某个SpringBean,直接注入即可。想要分发任务,调用map方法即可,开发者的学习和使用成本会低很多。

一句话总结就是:Ignite的分布式计算偏向于数据侧,适用于大数据处理。而OhMyScheduler的分布式计算偏向于业务侧,适用于传统Java应用的业务处理。

此外,高效开发一直是PowerJob的设计理念,像在线查看任务运行情况、在线查看任务运行日志等功能,在实际开发中将会非常实用。