分布式定时任务调度系统技术解决方案(xxl-job、Elastic-job、Saturn) (6)

大众点评目前已接入XXL-JOB,内部别名《Ferrari》(Ferrari基于XXL-JOB的V1.1版本定制而成,新接入应用推荐升级最新版本)。 据最新统计, 自2016-01-21接入至2017-12-01期间,该系统已调度约100万次,表现优异。新接入应用推荐使用最新版本,因为经过数十个版本的更新,系统的任务模型、UI交互模型以及底层调度通讯模型都有了较大的优化和提升,核心功能更加稳定高效。

文档比较详细,xxl-job分为调度中心(中心式)和执行器(分布式),调度中心基于集群Quartz实现并支持集群部署,可保证调度中心HA;任务分布式执行,任务"执行器"支持集群部署,可保证任务执行HA,其中调度中心集群基于DB,而其他两个框架用zookeeper崃实现分布式锁。

侧重的业务实现的简单和管理的方便,学习成本简单,失败策略和路由策略丰富。推荐使用在“用户基数相对少,服务器数量在一定范围内”的情景下使用,版本更新较快也是其一大亮点,支持子任务,DAG任务和依赖任务已经列入TODOLIST,暂时不支持秒任务,具体支持如下:

支持多种语言作业,语言无关(Java/Go/C++/PHP/Python/Ruby/shell)

分片广播任务:执行器集群部署时,任务路由策略选择"分片广播"情况下,一次任务调度将会广播触发集群中所有执行器执行一次任务,可根据分片参数开发分片任务;

动态分片:分片广播任务以执行器为维度进行分片,支持动态扩容执行器集群从而动态增加分片数量,协同进行业务处理;在进行大数据量业务操作时可显著提升任务处理能力和速度。

支持作业高可用

弹性扩容缩容:一旦有新执行器机器上线或者下线,下次调度时将会重新分配任务;

故障转移:任务路由策略选择"故障转移"情况下,如果执行器集群中某一台机器故障,将会自动Failover切换到一台正常的执行器发送调度请求。

事件触发:除了"Cron方式"和"任务依赖方式"触发任务执行之外,支持基于事件的触发任务方式。调度中心提供触发任务单次执行的API服务,可根据业务事件灵活触发。

任务依赖:支持配置子任务依赖,当父任务执行结束且执行成功后将会主动触发一次子任务的执行, 多个子任务用逗号分隔;

容器化:提供官方docker镜像,并实时更新推送dockerhub,进一步实现产品开箱即用;

任务失败重试:支持自定义任务失败重试次数,当任务失败时将会按照预设的失败重试次数主动进行重试;其中分片任务支持分片粒度的失败重试;

    Elastic-job:

当当开源的分布式调度解决方案,由两个相互独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成。Elastic-Job-Lite定位为轻量级无中心化解决方案,使用jar包的形式提供分布式任务的协调服务。一般我们只要使用Elastic-Job-Lite就好。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzgsjz.html