• 分布式调度框架Elastic-Job和xxl-job区别


    分布式调度框架Elastic-Job和xxl-job区别还是比较明显的,首先明确一下共同点,即它们俩共同解决的问题是什么?

    一、解决传统定时任务存在的问题:

    1、业务耦合 : 如果需要修改定时任务时间,就需要重新部署整个应用,将会导致整个应用停滞一段时间。

    2、单点风险  : 所有调度任务都在单台服务器上执行,当任务执行节点出现问题时,整个定时任务全部终止。

    3、资源分配不均衡 : 随着业务越来越多,相应的定时任务也会增多,单台服务器执行任务的压力会越来越大。

    二、分布式调度解决的问题

    1、分布式调度协调

    2、弹性扩容缩容

    3、失效转移

    4、错过执行作业重触发

    5、作业分片一致性,保证同一分片在分布式环境中仅一个执行实例

    6、自诊断并修复分布式不稳定造成的问题

    7、支持并行调度 支持作业生命周期操作

    三、两种方案优缺点对比

    1、Elastic-Job 的伸缩性强

           Elastic-Job 是一个分布式调度解决方案,由两个相互独立的子项目 Elastic-Job-Lite 和 Elastic-Job-Cloud 组成。

            Elastic-Job-Lite 定位为轻量级无中心化解决方案,使用 jar 包的形式提供分布式 任务的协调服务。

             基于 quartz 定时任务框架为基础的,因此具备 quartz 的大部分功能 使用 zookeeper 做协调,调度中心,更加轻量级 支持任务的分片 支持弹性扩容,可以水平扩展, 当任务再次运行时,会检查当前的服务器数量,重新分片,分片结束之后才会继续执行任务 失效转移,容错处理,当一台调度服务器宕机或者跟 zookeeper 断开连接之后,会立即停止作业,然后再去寻找其他空闲的调度 服务器,来运行剩余的任务 提供运维界面,可以管理作业和注册中心。

               Elastic-Job-Lite 是去中心化解决方案。

    2、xxl-job的灵活性好:

    xxl-job 是一款基于 spring, quartz,netty 开源定时任务框架,解决的问题是不用每一个 job-client 都需要集成 quartz,管 理 cron 配置,尤其 job 很多的时候当容器启动会执行一堆 job,影响启动速度。 原理简单而言就是由 job 配置中心管理通过 quartz 控制客户端 job 触发时机,然后通过 netty rpc 调用执行客户端的具体 实现。 这样中心化的方式可以极大改善 job 的管理成本,还可以配置集群。下面是其全景图:

     

    XXL-JOB 是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。 现已开放源代码 并接入多家公司线上产品线,开箱即用。与 E-Job 走无中心化方式不同,XXL-JOB 是中心集权方式。

     

    xxl-job可以部署集群,但是集群之间的节点之间没有关系。

    四、xxl-job 使用时经常遇到的问题 

    1、XXL-JOB的服务器端和用户端版本必须保持一致,不然会报错

    2、由于xxl-job使用的一些依赖包与原有项目中的依赖包存在版本冲突,造成java.lang.NoClassDefFoundError错误

    参考2

    3、 netty版本与项目中包冲突,解决方案引入新的包

    参考1

    还有一篇介绍两者区别的问题,可以参考。

    参考区别

    到此,两者区别分析完毕,下一篇我们分析 spring task调度器用法,敬请期待!

  • 相关阅读:
    《昇思25天学习打卡营第5天|10使用静态图加速》
    Arduino框架下ESP32使用固件自带的SD库的总结
    vue在子组件中调用接口、点击按钮弹出窗口显示内容
    CRC8校验算法源码——C语言版
    本地服务启动慢问题及dubbo测试方法记录
    解决跨域报错
    瑞吉外卖实战项目全攻略——第四天
    开放式运动耳机排行榜哪个好用,排行靠前的五款运动耳机分享
    【C++学习】继承
    Flink SQL你用了吗?
  • 原文地址:https://blog.csdn.net/nandao158/article/details/126107753