基于zookeeper、quzrtz的分布式任务调度(作业)框架
实现的主要功能:
- 重写quartz基于数据库的分布式功能,改用zookeeper实现注册中心,任务调度,分配
- 并行调度:采用任务分片方式实现。将任务量分为n片,由分布式服务器并行执行分配到的分片项
- 弹性缩容扩容:将任务拆分为n个任务项后,各个服务器(job实例)分别执行各自分配到的任务项。一旦有新的服务器加入集群或者现有服务器下线,elastic-job将在保留本次任务执行不变的情况下,下次任务开始前触发任务重分片
- 集中管理:采用基于 Zookeeper 的注册中心,集中管理和协调分布式作业的状态,分配和监听。外部系统可直接根据 Zookeeper 的数据管理和监控 elastic-job。(elastic console)
- 定制化流程型任务:作业可分为简单和数据流处理两种模式,数据流又分为高吞吐处理模式和顺序性处理模式,其中高吞吐处理模式可以开启足够多的线程快速的处理数据,而顺序性处理模式将每个分片项分配到一个独立线程,用于保证同一分片的顺序性,这点类似于 kafka 的分区顺序性。
其他功能
失效转移:弹性扩容缩容在下次作业运行前重分片,但本次作业执行的过程中,下线的服务器所分配的作业将不会重新被分配。失效转移功能可以在本次作业运行中用空闲服务器抓取孤儿作业分片执行。同样失效转移功能也会牺牲部分性能。
网友评论