XXL-JOB分布式任务调度平台

XXL-JOB分布式任务调度平台

XXL-JOB分布式任务调度平台
文档见:
https://github.com/xuxueli/xxl-job/blob/master/doc/XXL-JOB官方文档.md

需要注意的是版本 v2.1.2 Release Notes[2019-12-12]
由原来的类注解改为方法注解
类注解:

@JobHander(value="serviceHandler")@Componentpublic class ServiceHandler extends IJobHandler {    private static final Logger logger = LoggerFactory.getLogger(ServiceHandler.class);    @Override    public ReturnT<String> execute(String... strings) {        logger.info("ServiceHandler start .......strings:{}", JSON.toJSONString(strings));        return ReturnT.SUCCESS;    }}

方法任务支持:由原来基于JobHandler类任务开发方式,优化为支持基于方法的任务开发方式;因此,可以支持单个类中开发多个任务方法,进行类复用

@Componentpublic class DemoHandler extends IJobHandler {    @XxlJob("demoJobHandler")    @Override    public void execute() {        // 获取参数        String param = XxlJobHelper.getJobParam();        System.out.println("demoJobHandler: " + param);        // 设置任务结果        XxlJobHelper.handleSuccess();    }}

优点:
1、分布式集群任务调度
2、调度采用线程池方式实现,避免单线程因阻塞而引起任务调度延迟。
3、耦合性低,已操作
4、有过期处理策略
任务调度错过触发时间时的处理策略:

可能原因服务重启;调度线程被阻塞,线程被耗尽;上次调度持续阻塞,下次调度被错过;
处理策略:
过期超5s:本次忽略,当前时间开始计算下次触发时间
过期5s内:立即触发一次,当前时间开始计算下次触发时间
5、心跳检查机制,当任务"路由策略"选择"故障转移(FAILOVER)"时,当调度中心每次发起调度请求时,会按照顺序执行器发出心跳检测请求,第一个检测为存活状态的执行器将会被选定并发送调度请求。
6、管理界面调度日志一目了然。
7、全异步化 & 轻量级
全异步化设计:XXL-JOB系统中业务逻辑在远程执行器执行,触发流程全异步化设计。相比直接在调度中心内部执行业务逻辑,极大的降低了调度线程占用时间;
异步调度:调度中心每次任务触发时仅发送一次调度请求,该调度请求首先推送“异步调度队列”,然后异步推送给远程执行器
异步执行:执行器会将请求存入“异步执行队列”并且立即响应调度中心,异步运行
轻量级设计:XXL-JOB调度中心中每个JOB逻辑非常 “轻”,在全异步化的基础上,单个JOB一次运行平均耗时基本在 "10ms" 之内(基本为一次请求的网络开销);因此,可以保证使用有限的线程支撑大量的JOB并发运行;
8、可设置访问令牌。
9、执行器灰度上线
调度中心与业务解耦,只需部署一次后常年不需要维护。但是,执行器中托管运行着业务作业,作业上线和变更需要重启执行器,尤其是Bean模式任务。 执行器重启可能会中断运行中的任务。但是,XXL-JOB得益于自建执行器与自建注册中心,可以通过灰度上线的方式,避免因重启导致的任务中断的问题。

步骤如下:
1、执行器改为手动注册,下线一半机器列表(A组),线上运行另一半机器列表(B组);
2、等待A组机器任务运行结束并编译上线;执行器注册地址替换为A组;
3、等待B组机器任务运行结束并编译上线;执行器注册地址替换为A组+B组; 操作结束;

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部