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

2023-11-08 10:08:34 浏览数 (3)

1 简介

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

代码语言:javascript复制
// 应用内部定义任务类,实现SimpleJob接口
public class MyElasticJob implements SimpleJob {
  
  	// 编写自己任务的实际业务流程
    @Override
    public void execute(ShardingContext context) {
        switch (context.getShardingItem()) {
            case 0:
                // do something by sharding item 0
                break;
            case 1:
                // do something by sharding item 1
                break;
            case 2:
                break;
            // case n: ...
        }
    }
}

2 案例

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

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

3 本质

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

4 优点

使用者角度:简单易用。

5 缺点

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

6 控制台

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

0 人点赞