• 定时任务调度中心简单竞品分析


    目前国内市面上有调度框架如下quartz、spring Schedule、TBSchedule、xxl-job、elastic-job、Saturn……

    Quartz:关注的是定时任务而非数据,Java编写的开源作业调度框架,需要二次开发,基本上所有产品都是基于Quartz进行开发的

    TBSchedule已经不更新、spring Schedule不具备分布式能力使用也不方便。Saturn是基于elastic-job的,真正可比的就两xxl-job,elastic-job

    elastic-job:无中心化设计,调度和执行一起部署,使用ZooKeeper作为注册中心进行作业注册和监控信息存储实现分布式能力。

    xxl-job:中心化设计,调度和执行分开部署,统一使用一个调度中心进行任务的调度并且只负责调度的发起,同时集成任务的管理等。而执行器分散执行。

    简单比喻无中心设计和中心化设计区别,任务调度简单讲就是解决三个问题谁什么时间去做什么事。中心化设计就是设计一个中心负责指定时间指定谁去做事的,但是具体怎么做也可以指定也可以不指定也可以指定,也就是说各个节点不知道自己什么时候要做什么事坐等中心的安排。无中心就是不用一个中心去指定,各个节点自己就知道什么时候需要做什么事,但也不能每次大家都一起执行,所以由一个负责人指定这次由谁执行。

    featureXXL-JOBelastic-jobSaturn
    背景大众点评开源当当网开源唯品会基于elastic-job1.0开发
    依赖mysqlZooKeeperZooKeeper
    上手难度简单较难较难
    社区文档多,登记使用公司400+,star17.5k基本部署、开发文档,登记使用公司80+,star6.8k文档极少,登记使用公司10+,star2k
    运维页面任务CURD,查看日志、报表任务CURD、作业状态支任务CURD,查看日志、报表
    执行日志追朔可查询日志可实现任务执行前和执行后监听可查询日志
    失败处理重试、转移、报警重试、转移、报警自行订阅实现扩展重试、转移、报警自行实现接口扩展
    弹性扩容缩容支持,基于mysql分布式支持,向ZK注册支持,向ZK注册
    高可用支持,调度中心HA,基于数据库支持,基于ZK选举支持,基于ZK选举
    任务分片支持,分片广播支持支持
    触发方式时间、事件(API触发)时间时间、事件

    elastic-job: 缺少报警、日志查看等实现,但有弹性分片、无中心性能更高等特点,两年前很火,但是停更了两年,但去年中又更新了,停更两年后热度下降,而且elastic-job依赖于ZooKeeper

    Saturn:弥补了elastic-job的好多短板,增加日志、报表、告警等功能,持续更新、功能更加完善,但是社区不活跃、文档少

    xxl-job简单、功能强大、可扩展性、社区活跃,监控预警、高可用等都有较好的实现,但集群均基于数据库锁,数据库瓶颈

  • 相关阅读:
    MQTT的认识(3)- 案例
    dubbo3.0.5同一个providerAPI的消费组,不同应用的消费者设置不同的消费者参数,会导致其它消费者服务无法启动
    50.Python-web框架-Django中引入静态的bootstrap样式
    C++:delete和delete[]释放内存的区别
    FFmpeg截图命令优化
    HashMap底层原理put()与resize()扩容
    dpdk实现dns
    【Leetcode】236. 二叉树的最近公共祖先
    ElasticSearch安装详细教程以及相关踩坑
    Vue3使用方法
  • 原文地址:https://blog.csdn.net/I_am_hardy/article/details/120077017