一、什么是任务调度
我们可以思考一下下面业务场景的解决方案:
- 某电商平台需要每天上午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三种作业类型