这篇文章将为大家详细讲解有关大数据分布式任务调度系统定时任务的解决方案是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
我们从架构和技术实现上来为大家讲解分布式任务调度系统TCT(Tencent Cloud Task)如何实现任务调度的精准实时、稳定高效,以及任务的切分和编排。
- 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:具有跨平台、可编排、高可用、无侵入、一致性、异步并行、动态扩展、实时监控等特点。
开源方案的逻辑架构图

开源方案的技术实现图
从开源方案的逻辑架构和技术实现上,我们也能直观的看出开源方案的不足:
- 架构方面:调度器职责划分不清晰、系统扩展性不足。面对大规模虚拟化&复杂的网络 环境,简单的远程调用并不能完成胜任。
- 性能方面:ZooKeeper集群伴随任务量和高频事件的增多,成为系统性能瓶颈。简的远程调用或者任务拉取等方案, 满足不了量大频高的业务诉求。
- 功能方面:缺乏完整认证鉴权方面的系统设计,安全性无法保障。任务干预、监控告警等系统运维方面能力较弱。
为了解决上述问题,我们进行了深入的探索,并设计出了一套企业级的分布式任务调度系统TCT(Tencent Cloud Task)。TCT提供一站式分布式调度任务解决方案,支持随机、广播多种任务类型,具备任务分片、任务编排能力,提供完善的监控告警体系。我们结合了用户实际的业务场景,吸取了历史经验,主要解决了面几个核心问题:
以上核心要素,对系统的要求各不相同,可提供如下总结进行参考:

技术架构图


功能架构图
优点一:模块化微服务架构设计, 职责清晰
触发器
调度器
接入网关
触发器
调度器
接入网关
优点三:功能完备
- 支持Cron表达式,例如 * 0/5 * * * ? 等。
便捷的管理能力,提供暂停、恢复、停止、重试等多种多样的管控能力。

任务管理
- 随机节点执行:选择集群中一个可用的执行节点执行调度任务。适用场景:定时对账。
- 广播执行:在集群中所有的执行节点分发调度任务并执行。适用场景:批量运维。
- 分片执行:按照用户自定义分片逻辑进行拆分,分发到集群中不同节点并行执行,提升资源利用效率。适用场景:海量日志统计。

任务调度执行方式
支持三种触发方式
- 手动触发:用户在任务管理列表选择特定任务手动执行一次,调度器立即进行任务分发,并产生一个执行批次。适用场景:周期执行任务补充。
- 周期触发: 通过设置任务触发的间隔时间来设置任务的执行时间; 可支持 cron 表达式 所不支持的周期设置。 适用场景: 定时备份 。
- 工作流触发:工作流是一组任务集合,可以编排任务的上下游逻辑依赖,进行任务触发。适用场景: 海量数据处理 ,如数据采集,数据过滤,数据清洗,数据聚合的流程编排。

任务触发方式
日志溯源能力
通过日志服务, 方便用户查询任务执行日志。用户可以通过执行记录所有任务的执行批次详情,能够对当前状态为执行中的批次进行停止执行操作,能够对当前已经终止的批次触发重新执行操作;点击批次ID进入该批次的执行详情,点击任务ID进入该任务的执行批次列表,点击执行部署组进入资源详情列表。
日志查询
支持复杂的任务编排能力
可以实现多种场景的任务工作流。通过构建调度任务的上下游依赖关系完成复杂的任务调度逻辑。适用于大数据流程处理、任务执行工单、批量运维流程编排等应用场景。

任务编排
一个平台性的系统,从产品功能到技术架构都存在着方方面面的挑战,需要层层抽象和逐步优化才能完成一个成熟产品落地。在大数据时代,面对海量的数据和用户规模,任何一种架构设计,都面临着网络响应、 容错、幂等、数据可靠性/一致性等诸多问题。
对于平台而言,任务的可靠性是第一优先级需要考虑的,次之任务执行的时效性。合理地进行功能模块化拆分,针对不同场景,设计不同的扩展方案,保证SLA的前提下提升系统整体吞吐,实现可靠有效触达,应对频高量大的业务场景。
对于用户而言,多样化的管理手段、多维度的运行指标查询, 全方位的链路监控则是用户追求的,只有让用户从复杂混乱的定时任务场景中抽离出来,才能更加专注在业务研发。
关于大数据分布式任务调度系统定时任务的解决方案是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。