分布式任务调度系统(分布式任务调度中心)
ccwgpt 2024-10-12 02:51 100 浏览 0 评论
文章整理:加米谷大数据
本文我们从架构和技术实现上来为大家讲解腾讯云分布式任务调度系统 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 简介
为了解决上述问题,我们进行了深入的探索,并设计出了一套企业级的分布式任务调度系统 TCT(Tencent Cloud Task)。TCT 提供一站式分布式调度任务解决方案,支持随机、广播多种任务类型,具备任务分片、任务编排能力,提供完善的监控告警体系。我们结合了用户实际的业务场景,吸取了历史经验,主要解决了面几个核心问题:
以上核心要素,对系统的要求各不相同,可提供如下总结进行参考:
技术架构
架构,总是在需求中不断演进…
技术架构图
下面我们解释下架构图中的各个功能模块:
功能架构
功能架构图
这样设计分布式任务调度系统,有以下几个优点:
优点一:模块化微服务架构设计,职责清晰
触发器
- 根据任务执行规则,计算解析出不同时点的任务触发事件。通过 MQ 的实现触发和调度的解耦,提高吞吐。
- 通过合理的分片策略和容灾策略,解决传统多节点锁竞争轮训的解析加载策略,降低对存储的压力。
- 冷热数据隔离加载机制,进一步降低对存储压力和系统开销。
- 针对不同的触发频次,采取预加载策略和动态调整预加载算法,解决高频触发导致系统负载高的问题。
调度器
- 整个任务调度系统中控制逻辑最为复杂的组件,IO 密集型组件。
- 通过订阅 MQ 消息事件,与触发器解耦,有效提升系统的吞吐。
- 专注于任务调度的逻辑控制,如任务执行调度、负载均衡、容错、限流、计费等。
接入网关
- 独立承担客户端的接入认证和鉴权,提供有效的权限校验策略。
- 负责上下行信道的回话管理,与复杂的业务逻辑完成解耦。
- 客户端节点及服务节点上下线自动探测感知机制,有效实现会话管理。
- 集群节点组网,数据透传及路由,实现组件内闭环。
- 配合 SDK/Agent 侧设计,有效避免了单节点连接数瓶颈以及服务节点冷起场景下的高并发 tcp 建立连接问题。
优点二:无状态化设计,简便水平扩展
触发器
通过有效的分片策略和优雅停服策略,避免触发压力集中化,实现服务的水平扩缩性。
调度器
无状态的设计方案,无需考虑任务的回源问题,实现无状态的水平扩容。
接入网关
集群节点组网的设计方案,支持水平扩容,实现理论上 TCP 连接数无上限。
优点三:功能完备
灵活的触发规则
- 支持 Cron 表达式,例如 * 0/5 * * * ? 等。
- 特定周期频率的触发规则,例如 间隔 36 分钟等。
便捷的管理能力,提供暂停、恢复、停止、重试等多种多样的管控能力。
任务管理
支持三种执行方式
- 随机节点执行:选择集群中一个可用的执行节点执行调度任务。适用场景:定时对账。
- 广播执行:在集群中所有的执行节点分发调度任务并执行。适用场景:批量运维。
- 分片执行:按照用户自定义分片逻辑进行拆分,分发到集群中不同节点并行执行,提升资源利用效率。适用场景:海量日志统计。
任务调度执行方式
支持三种触发方式
- 手动触发:用户在任务管理列表选择特定任务手动执行一次,调度器立即进行任务分发,并产生一个执行批次。适用场景:周期执行任务补充。
- 周期触发:通过设置任务触发的间隔时间来设置任务的执行时间;可支持 cron 表达式所不支持的周期设置。适用场景:定时备份。
- 工作流触发:工作流是一组任务集合,可以编排任务的上下游逻辑依赖,进行任务触发。适用场景:海量数据处理,如数据采集,数据过滤,数据清洗,数据聚合的流程编排。
任务触发方式
日志溯源能力
通过日志服务,方便用户查询任务执行日志。用户可以通过执行记录所有任务的执行批次详情,能够对当前状态为执行中的批次进行停止执行操作,能够对当前已经终止的批次触发重新执行操作;点击批次 ID 进入该批次的执行详情,点击任务 ID 进入该任务的执行批次列表,点击执行部署组进入资源详情列表。
日志查询
支持复杂的任务编排能力
可以实现多种场景的任务工作流。通过构建调度任务的上下游依赖关系完成复杂的任务调度逻辑。适用于大数据流程处理、任务执行工单、批量运维流程编排等应用场景。
任务编排
总结
一个平台性的系统,从产品功能到技术架构都存在着方方面面的挑战,需要层层抽象和逐步优化才能完成一个成熟产品落地。在大数据时代,面对海量的数据和用户规模,任何一种架构设计,都面临着网络响应、容错、幂等、数据可靠性 / 一致性等诸多问题。
对于平台而言,任务的可靠性是第一优先级需要考虑的,次之任务执行的时效性。合理地进行功能模块化拆分,针对不同场景,设计不同的扩展方案,保证 SLA 的前提下提升系统整体吞吐,实现可靠有效触达,应对频高量大的业务场景。
对于用户而言,多样化的管理手段、多维度的运行指标查询,全方位的链路监控则是用户追求的,只有让用户从复杂混乱的定时任务场景中抽离出来,才能更加专注在业务研发。
相关推荐
- 盲盒小程序背后的技术揭秘:如何打造个性化购物体验
-
在2025年的今天,盲盒小程序作为一种新兴的购物方式,正以其独特的魅力和个性化体验吸引着越来越多的消费者。这种将线上购物与盲盒概念相结合的应用,不仅为消费者带来了未知的惊喜,还通过一系列技术手段实现了...
- 小程序·云开发已支持单日亿级调用量,接口可用率高达99.99%
-
2019-10-1914:1210月19日,由腾讯云与微信小程序团队联合举办的“小程序·云开发”技术峰会在北京召开。会上,微信小程序团队相关负责人表示“小程序·云开发”系统架构已经支持每天亿级别的...
- 程序员副业开启模式:8个GitHub上可以赚钱的小程序
-
前言开源项目作者:JackonYang今天推荐的这个项目是「list-of-wechat-mini-program-list」,开源微信小程序列表的列表、有赚钱能力的小程序开源代码。这个项目分为两部分...
- 深度科普:盲盒小程序开发的底层逻辑
-
在当下的数字化浪潮中,盲盒小程序以其独特的趣味性和互动性,吸引着众多消费者的目光。无论是热衷于收集玩偶的年轻人,还是享受拆盒惊喜的上班族,都对盲盒小程序情有独钟。那么,这种备受欢迎的盲盒小程序,其开发...
- 微信小程序的制作步骤
-
SaaS小程序制作平台,作为数字化转型时代下的创新产物,不仅将易用性置于设计的核心位置,让非技术背景的用户也能轻松上手,快速制作出功能丰富、界面精美的小程序,更在性能和稳定性方面投入了大量精力,以确保...
- 携程开源--小程序构建工具,三分钟搞定
-
前言今天推荐的这个项目是「wean」,一个小程序构建打包工具。在wean之前,大量小程序工具使用webpack进行打包,各种loader、plugin导致整个开发链路变长。wean旨在解...
- 校园小程序的搭建以及营收模式校园外卖程序校园跑腿校园圈子系统
-
校园小程序的架构设计主要包括云端架构和本地架构两部分。云端架构方面,采用Serverless架构可以降低技术门槛,通过阿里云、腾讯云等平台提供的云服务,可以实现弹性扩容和快速部署。例如,使用云数据库、...
- 盲盒小程序开发揭秘:技术架构与实现原理全解析
-
在2025年的今天,盲盒小程序作为一种结合了线上购物与趣味性的创新应用,正受到越来越多用户的喜爱。其背后的技术架构与实现原理,对于想要了解或涉足这一领域的人来说,无疑充满了神秘与吸引力。本文将为大家科...
- 月活百万的小程序架构设计:流量暴增秘籍
-
从小程序到"大"程序的蜕变之路当你的小程序用户量从几千跃升至百万级别时,原有的架构就像一件不合身的衣服,处处紧绷。这个阶段最常遇到的噩梦就是服务器崩溃、接口超时、数据丢失。想象一下,在...
- 认知智能如何与产业结合?专家学者共探理论框架与落地实践
-
当前,以大模型为代表的生成式人工智能等前沿技术加速迭代,如何将认知智能与产业结合,成为摆在各行各业面前的一个问题。论坛现场。主办方供图7月4日,2024世界人工智能大会暨人工智能全球治理高级别会议在...
- 现代中医理论框架
-
...
- 认知行为(CBT)中的ABC情绪理论
-
情绪ABC理论是由美国心理学家阿尔伯特·艾利斯(AlbertEllis1913-2007)创建的理论,A表示诱发性事件(Activatingevent),B表示个体针对此诱发性事件产生的一些信...
- 说说卡伦霍妮的理论框架,对你调整性格和人际关系,价值很大
-
01自在今天我主要想说下霍妮的理论框架。主要说三本书,第一本是《我们时代的神经症人格》,第二本是《我们内心的冲突》,第三本是《神经症与人的成长》。根据我的经验,三本书价值巨大,但并不是每个人都能读进去...
- 供应链管理-理论框架
-
一个最佳价值的供应链,应该是一个具有敏捷性、适应性和联盟功能(3A)的供应链,其基本要素包括战略资源、物流管理、关系管理以及信息系统,目标是实现速度、质量、成本、柔性的竞争优势。篇幅有...
- 微信WeUI设计规范文件下载及使用方法
-
来人人都是产品经理【起点学院】,BAT实战派产品总监手把手系统带你学产品、学运营。WeUI是一套同微信原生视觉体验一致的基础样式库,由微信官方设计团队为微信Web开发量身设计,可以令用户的使用感知...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- MVC框架 (46)
- spring框架 (46)
- 框架图 (58)
- bootstrap框架 (43)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- jpa框架 (47)
- laravel框架 (46)
- express框架 (43)
- scrapy框架 (52)
- beego框架 (42)
- java框架spring (43)
- grpc框架 (55)
- 前端框架bootstrap (42)
- orm框架有哪些 (43)
- ppt框架 (48)
- 内联框架 (52)
- winform框架 (46)
- gui框架 (44)
- cad怎么画框架 (58)
- ps怎么画框架 (47)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)
- oracle提交事务 (47)