《架构设计100讲:后台任务》中很多朋友说Quartz不好用,询问有没有推荐的分布式任务调度平台。这个国人的项目,必须推荐给你!
项目名称:XXL-JOB
项目地址:https://github.com/xuxueli/xxl-job
这是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展、开箱即用。2. 分布式,高可用:调度中心,执行器均支持集群部署,高可用;3. 策略丰富:触发策略,调度过期策略,阻塞处理策略,路由策略灵活;4. 健壮性:超时控制,失败重试,失败预警,故障转移考虑全面;5. 灵活性:支持在线开发任务,支持通用Handler,支持任务依赖,支持数据加密,支持用户管理,角色分配,权限控制;6. 易用性:后台CURD操作便捷,支持面板查看数据;画外音:官方文档包含36大优点,自己去git看吧。非常方便与快捷。
为什么不用Quartz,而要造一个轮子XXL-JOB?Quartz作为开源作业调度中的佼佼者,但依然存在以下问题:(2)需要持久化业务QuartzJobBean到底层数据表中,系统侵入性相当严重;(3)调度逻辑和QuartzJobBean耦合在同一个项目中,这将导致一个问题,在调度任务数量逐渐增多,同时调度任务逻辑逐渐加重的情况下,此时调度系统的性能将大大受限于业务;(4)quartz底层以“抢占式”获取DB锁并由抢占成功节点负责运行任务,会导致节点负载悬殊非常大;画外音:XXL-JOB通过执行器实现“协同分配式”运行任务,充分发挥集群优势,负载各节点均衡。XXL-JOB则弥补了Quartz的上述不足之处。(1)将调度行为抽象形成“调度中心”公共平台,而平台自身并不承担业务逻辑,“调度中心”负责发起调度请求;(2)将任务抽象成分散的JobHandler,交由“执行器”统一管理,“执行器”负责接收调度请求并执行对应的JobHandler中业务逻辑。即,“调度”和“任务”两部分可以相互解耦,提高系统整体稳定性和扩展性。XXL-JOB架构图如上所示,系统主要由两大部分组成:负责管理调度信息,按照调度配置发出调度请求,自身不承担业务代码。调度系统与任务解耦,提高了系统可用性和稳定性,同时调度系统性能不再受限于任务模块。支持可视化、简单且动态的管理调度信息,包括任务新建,更新,删除,GLUE开发和任务报警等,所有上述操作都会实时生效,同时支持监控调度结果以及执行日志,支持执行器Failover。负责接收调度请求并执行任务逻辑。任务模块专注于任务的执行等操作,开发和维护更加简单和高效。接收“调度中心”的执行请求、终止请求和日志请求等。XXL-JOB靠谱吗,不是为了晋升搞出来的玩具吧?据不完全统计:美团、平安、海尔、优信、移动、360、联想、京东、用友、搜狐、滴滴、科大讯飞、作业帮、哈啰、美图、途家、网易、理想、货拉拉、银联... 等几千家公司都在用着,靠不靠谱,可自行判断。