分布式调度 Elastic-job

132 阅读2分钟
一、什么是任务调度

我们可以思考一下下面业务场景的解决方案:

  • 某电商平台需要每天上午10点,下午3点,晚上8点发放一批优惠券
  • 某银行系统需要在信用卡到期还款日的前三天进行短信提醒
  • 某财务系统需要在每天凌晨0:10分结算前一天的财务数据,统计汇总

以上场景就是任务调度所需要解决的问题。

任务调度是为了自动完成特定任务,在约定的特定时刻去执行任务的过程。

理解:任务就是做什么事情,调度就是决定在什么时刻去执行这个任务。

二、为什么需要分布式调度(分布式调度作用)
1. 单机处理极限

假设有10000个订单要处理,但是单台机器最多只能处理2000个订单,由于单台机器资源是有限的,处理不完这些任务,这个时候需要用到分布式调度任务

2. 防止重复执行
3. 高可用
三、什么是Elastic-job

Elastic-job是一个分布式调度解决方案,由2个相互独立的子项目Elastic-job-Lite和ElasticJob-Cloud组成。

功能列表:

分布式调度协调

在分布式环境中,任务能够按照指定的调度策略执行,并且能够避免同一任务多实例重复执行。

丰富的调度策略

基于成熟的定时任务作业框架Quartz cron表达式执行定时任务。

弹性拓容缩容

当集群中增加一个实例,它应当能够被选举被执行任务;当集群减少一个实例时,它所执行的任务能被转移到别的示例中执行。

失效转移

某示例在任务执行失败后,会被转移到其他实例执行。

错过执行任务重触发

若因某种原因导致作业错过执行,自动记录错误执行的作业,并在下次作业完成后自动触发。

支持并行调度

支持任务分片,任务分片是指将一个任务分成多个小任务在多个实例同时执行。

作业分片一致性

当任务被分片后,保证同一分片在分布式环境中仅一个执行实例。

支持作业生命周期操作

可以动态对任务进行开启及停止操作。

丰富的作业类型

支持Simple、DataFlow、Script三种作业类型