登陆

分布式使命调度xxl-job

admin 2020-02-14 145人围观 ,发现0个评论

前语碎语

在单机运用时期,使命调度一般都是根据spring schedule和集成quartz来完成的,当体系开展成分布式服务,运用多实例的时分,使命就会呈现屡次调用的问题,许多时分咱们使命并不需要跑屡次。处理方案有许多,最最简略粗犷的便是能够设置运用开关。其次便是集中式话使命办理调度。当然,quartz也有集群形式,可是根据api操控并不直观。下面介绍一个集中式的分布式使命调度结构,能够很便利的处理分布式使命调度的问题

一,xxl-job简介

XXL-JOB是一个轻量级分布式使命调度结构,其中心规划方针是开发敏捷、学习简略、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。功用如下

1、简略:支撑经过Web页面临使命进行CRUD操作,操作简略,一分钟上手;

2、动态:支撑动态修正使命状况、暂停/康复使命,以及停止运转中使命,即时收效;

3、调度中心HA(中心式):调度选用中心式规划,“调度中心”根据集群Quartz完成,可保证调度中心HA;

4、履行器HA(分布式):使命分布式履行,使命"履行器"支撑集群布置,可保证使命履行HA;

5、使命Failover:履行器集群布置时,使命路由战略挑选"毛病搬运"情况下调杭州市天气预报度失利时将会滑润切换履行器进行Failover;

6、一致性:“调度中心”经过DB锁保证集群分布式调度的一致性, 一次使命调度只会触发一次履行;

7、自定义使命参数:支撑在线装备调度使命入参,即时收效;

8、调度线程池:调度体系多线程触发调度运转,保证调度准确履行,不被堵塞;

9、弹性扩容缩容:一旦有新履行器机器上线或许下线,下次调度时将会从头分配使命;

10、邮件报警:使命失利时支撑邮件报警,支撑装备多邮件地址群发报警邮件;

11、状况监控:支撑实时监控使命进展;

12、Rolling履行日志:支撑在线检查调度成果,而且支撑以Rolling方法实时检查履行器输出的完好的履行日志;

13、GLUE:供给Web IDE,支撑在线开发使命逻辑代码,动态发布,实时编译收效,省掉布置上线的进程。支撑30个版别的前史版别回溯。

14、数据加密:调度中心和履行器之间的通讯进行数据加密,提高调度信息安全性;

15、使命依靠:支撑装备子使命依靠,当父使命履行完毕且履行成功后将会主动触发一次子使命的履行, 多个子使命用逗号分隔;

16、推送maven中心库房: 将会把最新稳定版推送到maven中心库房, 便利用户接入和运用;

17、使命注册: 履行器会周期性主动注册使命, 调度中心将会主动发现注册的使命并触发履行。一起,也支撑手动录入履行器地址;

18、路由战略:履行器集群布置时供给丰厚的路由战略,包含:第一个、最终一个、轮询、随机、一致性HASH、最不常常运用、最分布式使命调度xxl-job近最久未运用、毛病搬运、繁忙搬运等;

19、运转报表:支撑实时检查运转数据,如使命数量、调度次数、履行器数量等;以及调度报表,如调度日期分布图,调度成功分布图等;

20、分布式使命调度xxl-job脚本使命:支撑以GLUE形式开发和运转脚本使命,包含Shell、Python等类型脚本;

21、堵塞处理战略:调度过于密布履行器来不及处理时的处理战略,战略包含:单机串行(默许)、丢掉后续调度、掩盖之前调度;

22、失利处理战略;调度失利时的处理战略,战略包含:失利告警(默许)、失利重试;

23、分片播送使命:履行器集群布置时,使命路由战略挑选"分片播送"情况下,一次使命调度将会播送触发集群中所有履行器履行一次使命,可根据分片参数开发分片使命;

24、动态分片:分片播送使命以履行器为维度进行分片,支撑动态扩容履行器集群然后动态添加分片数量,协同进行事务处理;在进行大数据量事务操作时可明显提高使命处理才能和速度。

25、事情触发:除了"Cron方法"和"使命依靠方法"触发使命履行之外,支撑根据事情的触发使命方法。调度中心供给触发使命单次履行的API服务,可根据事务事情灵敏触发。

二、布置:

见项目地址为:https://github.com/xuxueli/xxl-job

三、 开发第一个使命“Hello World”

本示例以新建一个 “GLUE形式(Java)” 运转形式的使命为例。更多有关使命的具体装备,请检查“章节三:使命详解”。 ( “GLUE形式(Java)”的履行代码托管到调度中心在线保护,比较“Bean形式使命”需要在履行器项目开发布置上线,愈加简洁轻量)

条件:请承认“调度中心”和“履行器”项目现已成功布置并发动;

过程一:新建使命:

过程二:“GLUE形式(Java)” 使命开发:

请点击使命右侧 “GLUE” 按钮,进入 “GLUE编辑器开发界面” ,见下图。“GLUE形式(Java)” 运转形式的使命默许现已初始化了示例使命代码,即打印Hello World。 ( “GLUE形式(Java)” 运转形式的使命实际上是一段承继自IJobHandler的Java类代码,它在履行器项目中运转,可运用@Resource/@Autowire注入履行器里中的其他服务)

过程三:触发履行:

请点击使命右侧 “履行” 按钮,可手动触发一次使命履行(通常情况下,经过装备Cron表达式进行使命调度动身)。

过程四:检查日志:

请点击分布式使命调度xxl-job使命右侧 “日志” 按钮,可前往使命日志界面检查使命日志。 在使命日志界面中,可检查该使命的前史调度记载以及每一次调度的使命调度信息、履行参数和履行信息。运转中的使命点击右侧的“履行日志”按钮,可进入日志操控台检查实时履行日志。

请关注微信公众号
微信二维码
不容错过
Powered By Z-BlogPHP