xxl-job 依赖 mysql 做数据存储,需要提前配置好; xxl-job 本身依赖于 JDK1.8+ 和 Maven 环境,目前使用的执行器是 go 编写的;
调度中心
集群节点配置的 db 需要保持一致,调度中心通过 db 配置区分不同集群;
执行器
是一个独立的 rpc 服务;
- admin 和 executor 服务间可相互调用;
- executor 通过 admin 服务注册到 admin 系统中;
- admin 系统可剔除掉线的执行器; 调度中心会从一组执行器中,选择其中一个执行任务;(通过 AppName 标识一组执行器,实现高可用性)
总结
xxl-job 支持集群部署,集群模式下可以有多个 xxl-job admin(任务调度中心),每个 xxl-job admin 都可以独立提供服务。当某一个 xxl-job admin 出现故障时,executor 会自动将其从执行器回调地址列表中剔除,不再向其发送任务调度请求,而将请求发送给健康的 xxl-job admin;实现了在 xxl-job admin 出现故障的情况下,executor 仍能正常工作,保证了系统的高可用性。
同时,xxl-job admin 与 executor 之间通过心跳检测机制(多对多),定期进行健康检查。如果检测到 xxl-job admin 已经恢复正常,那么 executor 将其重新加入到执行器回调地址列表中;