1. 首页 > 资讯

从 XXL

大家好,我是君哥。

分布式任务调度平台执行一次调度任务,一般会经历下面的过程。

在上图中,调度中心从注册中心拉取执行器列表,然后选择一个执行器来执行任务,任务执行完成后,执行器会把任务执行结果通知调度中心。

主流的分布式任务调度平台,比如 XXL-JOB、PowerJob 等都设计了调度中心、执行器这两个核心组件。

调度中心的作用不光是简单的任务触发,还包括管理执行器列表、任务结果管理等。

任务调度方式主要包括定时调度和 API 触发调度。

定时调度有两种方式,一种是调度中心在配置的任务执行时间给执行器发送任务调度信号,直接把任务发起。第二种是调度中心给任务执行器发送任务触发时间,任务执行器自己触发,比如使用延迟队列。

API 触发调度一般是调度中心收到外部 API 请求后,发起任务调度。

调度中心可以创建、更新、删除任务。下图来自 XXL-JOB 官网,XXL-JOB 在调度中心配置任务。

调度中心监控任务执行结果,查看任务执行日志,对于执行失败的任务也可以采取一些处置措施,比如重新触发任务执行。

定时任务对执行开始时间有要求,这就需要调度中心能够高效地把任务调度请求发出去,不能积压调度任务。

调度策略决定了调度中心选择哪一个执行器来执行任务,比如第一个、最后一个、随机、轮询、广播等。

执行器是分布式任务调度系统中最核心的部分,它是真正执行跑批任务、决定跑批结果的组件。

执行器要想收到任务触发信号,必须首先在注册中心进行注册,被调度中心成功拉取到。

注册成功后,需要周期性地给注册中心发送心跳,让调度中心感知到。

为了保证整个调度平台的高可用,执行器必须集群部署,这样如果调度中心选择调度的节点出现故障,可以进行重试把信号发送给下一个节点,不用担心任务不能被成功调度。

执行器为了提高执行效率,一般会启动多线程。执行器应该能支持线程数量灵活配置。比如一个数据量比较大的任务,可以配置多线程分段处理。但为了不影响同一个执行器上的其他任务,不能把线程数配置地太高,比如可以使用一半的线程处理当前任务。

对于更加复杂的批量任务,也可以设计成多个执行器参与来提高效率。比如一个任务调度到 4 个执行器执行,每个执行器 4 个线程参与,提高执行效率。

当所有的执行器都满负荷运行,会出现任务排队的情况,如果执行器集群可以动态扩容,就可以增加几个执行器节点,调度中心把任务调度到新的节点上。

单个执行器很可能会出现批次任务排队的情况,有必要采取一些阻塞控制策略。比如按照入队顺序依次执行,或者丢弃排队的任务直接给调度中心返回失败。

调度中心和执行器是分布式任务调度平台的两个核心组件,调度中心负责任务触发和调度,执行器负责任务执行和结果反馈。理解了这 2 个核心概念,就可以很容易地理解主流分布式调度平台的设计原理了。

本网站的文章部分内容可能来源于网络和网友发布,仅供大家学习与参考,如有侵权,请联系站长进行删除处理,不代表本网站立场,转载者并注明出处:https://jmbhsh.com/zixun/36187.html

联系我们

QQ号:***

微信号:***

工作日:9:30-18:30,节假日休息