1、基于开源的分布式定时任务xxl-job,另外根据公司业务特点,重新设计开发保臻的分布式定时任务bop-job。
1.1、待执行任务丢失问题
每天8点左右有大量的任务要调度(26万个),大量的任务直接通过http同步接口分派到【执行器】导致执行器内存溢出并挂掉。由于待执行的任务是暂存在【执行器】的内存,【执行器】挂掉导至这些任务没有执行且永久丢失
xxljob执行器与调度器之间没有足够的缓冲(所以bop-job采用MQ作为任务缓冲),目前支持rocketmq和pulsar
1.2、调度中心HA机制较弱
原生xxljob采用数据库全局锁方式避免多个调度中心实例之间的“竞争”,这种方式导致并发度很低(实际上只有一个调度中心实例在真正运行,其它实例被锁)。我的解决方式是引入Raft分式协议+分片的方式,来实现各调度中心实例无锁化且真正并行调度。