Elastic-Job

文章讨论了Quartz的Misfire情况,即任务错过触发的情况,如线程池满载、触发器暂停等,并介绍了Misfire策略的三种处理方式。Elastic-Job作为解决方案,提供了分布式调度、任务重试、并行调度、作业一致性保证和失效转移等功能,适合大规模分布式环境。此外,Elastic-Job还支持作业生命周期管理和多种作业类型,易于集成Spring框架,并有运维平台支持。
摘要由CSDN通过智能技术生成

1.Elastic-Job
Quartz-Misfire什么情况下错过触发?错过触发怎么办?线程池只有5个线程,当有5个任务都在执行的时候,第六个任务即将触发,这个时候任务就不能得到执行。在quartz.properties有一个属性misfireThreshold,用来定义触发器超时的"临界值",也就是超过了这个时间,就算错过触发了。
例如,如果misfireThreshold是60000(60秒),9点整应该执行的任务,9点零1分还没有可用线程执行它,就会超时(misfires)。下面这些原因可能造成misfired job:
1)、没有可用线程
2)、Trigger被暂停
3)、系统重启
4)、禁止并发执行的任务在到达触发时间时,上次执行还没有结束。
错过触发怎么办?Misfire策略设置每一种Trigger都定义了自己的Misfire策略,不同的策略通过不同的方法来设置。standalone工程MisfireTest
在这里插入图片描述
大体上来说有3种:
1)、忽略
2)、立即跑一次
3)、下次跑
怎么避免任务错过触发?
合理地设置线程池数量,以及任务触发间隔。

Quartz的不足:
1)、作业只能通过DB抢占随机负载,无法协调
2)、任务不能分片——单个任务数据太多了跑不完,消耗线程,负载不均
3)、作业日志可视化监控、统计

2.Elastic-Job功能特性
分布式调度协调:用ZK实现注册中心
错过执行作业重触发(Misfire)
支持并行调度(任务分片)
作业分片一致性,保证同一分片在分布式环境中仅一个执行实例
弹性扩容缩容:将任务拆分为n个任务项后,各个服务器分别执行各自分配到的任务项。一旦有新的服务器加入集群,或现有服务器下线,elastic-job将在保留本次任务执行不变的情况下,下次任务开始前触发任务重分片。
失效转移failover:弹性扩容缩容在下次作业运行前重分片,但本次作业执行的过程中,下线的服务器所分配的作业将不会重新被分配。失效转移功能可以在本次作业运行中用空闲服务器抓取孤儿作业分片执行。同样失效转移功能也会牺牲部分性能。
支持作业生命周期操作(Listener)
丰富的作业类型(Simple、DataFlow、Script)
Spring整合以及命名空间提供
运维平台

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值