1 简介
轻量级无中心化解决方案,jar包提供分布式任务的协调服务。
// 应用内部定义任务类,实现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 控制台
通过读取注册中心数据展现作业状态,更新注册中心数据修改全局任务配置。从一个任务调度平台的角度来看,控制台功能偏弱。