分布式任务调度(02)--ElasticJob-Lite

深碍√TFBOYSˉ_ 2024-02-19 09:27 148阅读 0赞

1 简介

轻量级无中心化解决方案,jar包提供分布式任务的协调服务。

0be33ec5bbdfbbd830f242b0218dbc63.png

  1. // 应用内部定义任务类,实现SimpleJob接口
  2. public class MyElasticJob implements SimpleJob {
  3. // 编写自己任务的实际业务流程
  4. @Override
  5. public void execute(ShardingContext context) {
  6. switch (context.getShardingItem()) {
  7. case 0:
  8. // do something by sharding item 0
  9. break;
  10. case 1:
  11. // do something by sharding item 1
  12. break;
  13. case 2:
  14. break;
  15. // case n: ...
  16. }
  17. }
  18. }

2 案例

应用有5个任务需执行。Job E需分成四个子任务,应用部署在两台机器。

40f692bf98b51890f0a072e13c986834.png

应用A启动后, 5个任务通过 zk 协调后被分配到两台机器上,通过Quartz Scheduler分开执行不同的任务。

3 本质

底层任务调度还是通过Quartz ,相比Redis分布式锁、Quartz 分布式部署 ,优势在可依赖zk,将任务通过LB分配给应用内的Quartz Scheduler容器。

4 优点

使用者角度:简单易用。

5 缺点

但架构,调度器和执行器依然在同一应用方JVM,且容器在启动后,依然需负载均衡。应用假如频繁重启,不断选主,对分片做负载均衡,这些都是较重操作。

6 控制台

通过读取注册中心数据展现作业状态,更新注册中心数据修改全局任务配置。从一个任务调度平台的角度来看,控制台功能偏弱。

发表评论

表情:
评论列表 (有 0 条评论,148人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Quartz任务调度-02

    一.配置、资源SchedulerFactory Quartz以模块方式构架,因此,要使它运行,几个组件必须很好的咬合在一起。幸运的是,已经有了一些现存的助手可以完成这些工