导语:本文我们从架构和技术实现上来为大家讲解腾讯云分布式任务调度系统TCT(Tencent Cloud Task)如何实现任务调度的精准实时、稳定高效,以及任务的切分和编排。(编辑:中间件小Q妹)
背景介绍
缘起缘灭,自有因果
首先, 我们来思考一些几个业务场景:
- XX信用卡中心,每月28日凌晨1:00到3:00需要完成全网用户当月的费用清单的生成。
- XX服饰,需要每天上午9:00开始向会员推送送生日祝福短信。
- XX游戏平台,新用户注册后,需要为当前用户生成定时任务, 在月底清算虚拟货币兑换的佣金额度。
- XX公司,需要定时执行Python脚本,清理掉某文件服务系统中无效的tmp文件。
- XX保险公司,需要每天凌晨2:00统计前一天新增保单数量,并触发报表生成任务,完成后抄送邮件。
类似上述批量处理海量定时任务的业务场景,在企业从单体架构向微服务架构、云化服务架构演进过程中已经屡见不鲜,基于Quartz的常规调度框架无法应对这种分布式场景下的需求,既无法实现任务调度的精准实时、稳定高效,也无法实现任务的切分、编排、失败补充。因此企业迫切需要一款一站式分布式调度任务解决方案,帮助企业统一管理繁杂纷乱的定时任务,增强企业微服平台服务化能力,支撑企业云化服务转型。
现有的开源方案
它山之石可以攻玉 …
在过往的发展中, 前人留下了不少优秀的方案, 各有利弊。常见开源产品: Quartz、XXL-Job、ElasticJob、Antares、SIA-TASK 等。
- Quartz:该框架应用最为广泛,其完全基于Java实现,Quartz 对单个任务的控制基本做到了极致,以其强大功能和应用灵活性,成为开源任务调度领域的权威及同类开源产品如Antares的基石;
- XXL-JOB:一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。XXL-JOB 支持分片,支持简单任务依赖,支持子任务依赖,不支持跨平台的。
- Elastic-Job:支持任务分片(作业分片一致性),没有任务编排,不支持跨平台;
- SIA-TASK:具有跨平台、可编排、高可用、无侵入、一致性、异步并行、动态扩展、实时监控等特点。