对比内容 | Elastic-Job | XXL-Job | CloudJob |
执行定时任务的方式 | 通过quartz触发任务执行,任务量大时会有延时 | 采用轮询jobtrigger的方式调度任务,任务量大时会有延时 | 轮询数据库的触发消息,作业进行了分片,任务量大延时很低 |
多节点部署时任务不能重复执行 | 支持 | 支持 | 支持 |
弹性扩容缩容 | 通过zk实现各服务的注册、控制及协调,当任务很多时zk会成为性能瓶颈 | 使用quartz基于数据库的分布式能力,服务器超出一定数量会给数据库造成压力 | 通过分片可以支持系统的横向扩展,扩容缩容方便快捷 |
日志可追溯 | 支持,可通过事件订阅的方式处理调度过程的重要事件,记录信息在数据库中可查询 | 支持,有日志查询界面 | 支持,通过链路追踪的方式记录执行过程,可以同界面查询历史记录 |
高可用 | 去中心化的调度方式,通过zookeeper来进行选举、调度。如果某个实例失败,会选举其它实例来执行 | “调度中心”通过DB锁保证集群分布式调度的一致性,一次任务调度只执行一次 | 集群内部的定时任务通过Elastic-Job来执行,保证内部任务的高可用;通过redis缓存记录调度信息,保证作业不会重复执行 |
作者简介
Xinchun OPPO高级后端工程师
目前负责分布式作业调度系统的开发,关注消息队列、redis数据库、ElasticSearch等中间件技术
推荐阅读
|MySQL 分布式事务的“路”与“坑”
|OPPO大数据离线任务调度系统OFLOW
本文版权归OPPO公司所有,如需转载请在后台留言联系