常见的开源方案quartz、elastic-job、xxl-job、opencron、antares等
1.quartz quartz通过在数据库中配置计时器信息,始终只有一个节点在数据库处于悲观锁定状态时执行相同的任务。
好处:
如果保证了节点的高可用性,并且一个节点锁定,则其他节点可以名列前茅。 缺点:
只有一个节点可以执行相同的任务,其他节点不执行任务,性能低,浪费资源。
在遇到大量的短任务时,每个节点经常竞争数据库锁,节点越多,这种情况就越严重。 性能下降。
quartz分布式只是解决了群集的高可用性问题,没有解决任务片问题,无法实现水平扩展。
2.elastic-job elastic-job是当当网基于quartz二次开发后的分布式调度解决方案,结合quartz非常好的时间调度功能,利用ZooKeeper实现灵活的切片此外,增加了许多实用的监测和管理功能。
开源社区活跃、文档齐全、代码优雅等优点是分布式任务调度框架的推荐选择。 它由两个相对独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成。
elastic-jo B- lite :以jar包的形式提供分布式任务协调服务的轻量级、非中心解决方案。
使用elastic-jo B- cloud:mesos docker (TBD )解决方案添加资源管理、APP应用程序分发和流程隔离等服务。
好处:
它基于quartz定时任务框架,具有quartz的大部分功能
使用zookeeper进行调整、调度中心,重量更轻
支持任务的瓷砖
可灵活扩展,可水平扩展。 当任务再次运行时,将检查当前服务的数量,重新划分分片,并在分片结束后继续执行任务
一旦故障转移、容错处理、一台调度程序服务器宕机或与zookeeper断开连接,它将立即停止作业,并查找其他可用的调度程序服务器以执行其馀任务
为管理工作和注册中心提供运输界面。
3.xxl-job个人开源轻量级分布式任务调度框架。 主要分为调度中心和执行机构两部分,调度中心在启动初始化时,默认生成执行机构的RPC代理对象(http协议),执行机构项目启动核心功能与elastic-job相同,同时与elastic-job相同
4.antares的好处:
一个任务只安排在服务器群集中的一个节点上。 调度机制基于成熟的quartz并行运行,用户可以通过预切片任务来有效提高任务的执行效率,提高故障转移的灵活性。 执行任务时,可以动态向计算机添加友好管理控制台的缺点。
不能动态添加任务。 只能在控制台上触发任务。 暂停、删除等操作文档较少,开源社区不活跃
5.opencron是一个功能齐全、真正通用的linux定时任务调度系统,在多种场景下满足各种复杂的定时任务调度,同时集成linux实时监控、webssh,便于管理定时任务的包装
缺点:
仅支持kill任务,而现场执行、任务执行状态查询等主要功能侧重于任务修改和查询。 不能动态添加任务和任务片。 各方案的比较特点quartz elastic-jo B- cloud xxl-jobantaresopencron为mysqljdk1.7、zookeeper 3.4.6、maven3.0.4、mesosmysql、jdk1.7 Tomcat8.0的高可用性多节点部署通过争用数据库锁,允许只有一个节点通过zookeeper注册和发现动态添加服务器。 水平扩展群集部署群集部署支持-任务类型-支持-高级功能-灵活扩展、多种工作模式、故障转移、运行状态收集、多线程处理数据、幂等性、容错处理、spring名称空间Rolling实时日志、在线编辑代码、自由分发(GLUE )任务进度监视电子邮件警告、报告运行、国际化任务片、故障转移、灵活的扩展时间规则quartz和crontab以及kill任务支持无法应用于分布式场景,如没有缺点管理界面来查询任务的执行状态,没有任务片支持等,需要部署zookeeper、mesos,增加了系统复杂度,学习成本高,通过获取DB锁可以实现集群随着时间长短、调度中心群集数量增加,数据库锁定竞争将变得激烈。 性能差、不支持的动态追加任务不适合分散场景文档的维护、完善。 文档少一点文档少一点管理界面不支持不支持容易支持的复杂简单普通的公司OpenSymphony本网个人使用企业大众化产品。 对分散调度要求较低的公司有36氪、当当网、国美、金柚网、联想、唯品会、亚信、平安、