分布式任务调度平台xxl-job

摘要:
分布式计时任务功能:作业使用集群。每个战争包的预定任务都是相同的。三台服务器启动后,计划的作业将执行三次。分布式任务调度平台xxl-job1.支持集群和作业负载平衡轮询机制。Xxl作业管理:一个单独的Web服务,它是作业管理平台。当executor项目启动时,服务器的本地信息将在xxl作业平台上注册。只要@JobHandler注释添加到类中,它就会在xxl作业平台上注册。

定时任务调度:在某个时间点触发执行操作(CURD)。

分布式任务调度平台的使用场景:数据同步、交易信息(对账)、清除过期用户信息、定期发送报表、消息推送。

传统的定时任务与分布式定时任务的区别?

传统的定时任务特征:单点系统(job没有集群)

思考:如果job在高并发的情况下,导致job服务器宕机之后,这时候应该如何处理?

1.定时任务和业务服务放在用一个jvm中(小项目)

2.大型互联网公司定时任务代码执行与业务执行代码服务器都是分开的,都是独立的jvm。

3.定时任务服务器是否需要考虑高并发情况?需要,因为同一时间点可能执行多个任务。间隔执行场景不需要,同时执行需要考虑高并发情况。

4.如果在高并发情况下,定时job宕机后,该如何处理(只有一台服务器的情况下) ?使用心跳检测监控自动重启、补偿机制,每个任务做一个标记。

定时任务在执行代码的时候突然报错了,该如何处理?日志记录错误,跳过当前错的任务,接着执行下一个任务。在使用定时job扫描错误日志记录,进行补偿信息。

分布式定时任务特征:job使用集群

产生问题:定时任务打成3个war包放在三个不同服务器上(8080、8081、8082)。定时任务在每个war包中都是相同的,三台服务器启动之后,定时job会被重复执行3遍。

分布式领域中服务器集群的情况下,如何保证job的幂等性?

1.使用zookeeper实现分布式锁方式,不推荐效率低。

2.在配置文件中加上打开定时job的开关8080 设置flag=true、8081 设置flag=false、8082设置 flag=false,这种方法不属于分布式了 属于单点的系统,不推荐。

3.启动的时候使用数据库的唯一标示,不推荐效率低。

4.使用分布式任务调度平台xxl-job、Elastric-job(依赖于zk)、TBSchedule。

分布式任务调度平台优点

xxl-job 

1.支持集群(保证幂等性问题)、job负载均衡轮询机制。

2.支持job补偿,如果job执行失败的话,会自动实现重试机制,如果重启多次还是失败的话,会发送邮件给运维人员。

3.支持job日志记录。

4.动态配置定时规则,传统的定时job规则都是写死的。

.......

其他优点在文档中可以查看

xxl-job github地址:

https://github.com/xuxueli/xxl-job

xxl-job 文档:

http://www.xuxueli.com/xxl-job/#/?id=_21-%e5%88%9d%e5%a7%8b%e5%8c%96%e8%b0%83%e5%ba%a6%e6%95%b0%e6%8d%ae%e5%ba%93

xxl-job原理

 执行器:定时job实际执行的服务器地址。

分布式任务调度平台xxl-job第1张

任务管理:配置定时任务的规则、路由策略、运行模式、报警邮箱。

分布式任务调度平台xxl-job第2张

 xxl-job-Admin:单独的Web服务,是job的管理平台。

步骤:

1.在xxl-job admin平台创建执行器(job实际的执行地址)。

2.在xxl-job admin 平台新建任务,填写对应的执行器。

3.在job服务器代码中,使用JobHandler标示该类为job执行方法。

4.如果有任务需要执行的时候,先在xxl-job admin执行一次,获取任务中的执行器(实际job地址)。

执行器项目启动的时候,会将服务器本地信息注册到xxl-job平台,只要类上添加@JobHandler(value="name")注解 就会注册到xxl-job平台上。

分布式任务调度平台xxl-job第3张

免责声明:文章转载自《分布式任务调度平台xxl-job》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇01:谁考了第k名 个人博客:doubleq.win使用lambda调用有参函数下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

【--RocketMQ--】RocketMQ实现事务消息

在RocketMQ4.3.0版本后,开放了事务消息这一特性,对于分布式事务而言,最常说的还是二阶段提交协议,那么RocketMQ的事务消息又是怎么一回事呢,这里主要带着以下几个问题来探究一下RocketMQ的事务消息:   事务消息是如何实现的  我们有哪些手段来监控事务消息的状态  事务消息的异常恢复机制  RocketMQ的事务消息是如何实现的 Roc...

从为知笔记收费说起

很早写的一片 日志,分享下: 今天得知为知笔记收费的消息,我便随即补上了一年的vip,一年只需要50元,折算到每一天的价格只有1毛3,从这样的价格上看,为知笔记团队的处境有多艰难以及作这个决定的无奈与坚定。 是的,中国互联网的免费时代 已经一去不复返了,从各大“云”的关闭到音乐、影视剧版权的风生水起,最后是神器快播的被告——是的,快播并不是因为传播A片倒...

android中Handle类的用法

android中Handle类的用法     当我们在处理下载或是其他需要长时间执行的任务时,如果直接把处理函数放Activity的OnCreate或是OnStart中,会导致执行过程中整个Activity无响应,如果时间过长,程序还会挂掉。Handler就是把这些功能放到一个单独的线程里执行,与Activity互不影响。     当用户点击一个按钮时如果...

vue props 用法(转载)

前面的话   组件接受的选项大部分与Vue实例一样,而选项props是组件中非常重要的一个选项。在 Vue 中,父子组件的关系可以总结为 props down, events up。父组件通过 props 向下传递数据给子组件,子组件通过 events 给父组件发送消息。本文将详细介绍Vue组件选项props 父子级组件   在介绍props之前,先介绍...

Linux计划任务.md

crond crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。 Linux下的任务调度分为两类,系统任务调度和用户任务调度。...

前端er们如何最快开发h5移动端页面?

声明在前:本文原创,一字一字手打,转载还请消息M我一下,求伸手党手下留情。   一直以来对web移动端的东西做的比较多,总是在做确从来没总结过,于是想对移动端的框架选择到相关技巧,进行一个归纳。首先声明,我也是只萌新,不是大神,肯定会有写得不够严谨的地方,欢迎指正~互相交流,若有忍不了的地方,求轻喷,轻喷,喷.....   以下为正文:   互联网已经进入...