导语:本文我们从架构和技术实现上来为大家讲解腾讯云分布式任务调度系统TCT(Tencent Cloud Task)如何实现任务调度的精准实时、稳定高效,以及任务的切分和编排。(编辑:中间件小Q妹)
缘起缘灭,自有因果
类似上述批量处理海量定时任务的业务场景,企业从单体架构向微服务架构、云化服务架构演进过程中已经屡见不鲜,基于Quartz的常规调度框架已无法应对这种分布式场景下的需求,既无法实现任务调度的精准实时、稳定高效,也无法实现任务的切分、编排、失败补充。因此企业迫切需要一款一站式分布式调度任务解决方案,帮助企业统一管理繁杂纷乱的定时任务,增强企业微服平台服务化能力,支撑企业云化服务转型。
它山之石可以攻玉 ...
开源方案的逻辑架构图
开源方案的技术实现图
从开源方案的逻辑架构和技术实现上,我们也能直观的看出开源方案的不足:
技术架构图
功能架构图
优点一:模块化微服务架构设计, 职责清晰
触发器
根据高频的任务执行策略,采取预加载策略和动态调整预加载算法,解决高频触发导致系统负载高的问题。
调度器
专注于任务调度的逻辑控制,如任务执行调度、负载均衡、容错、限流、计费等。
接入网关
配合SDK/Agent侧设计,有效避免了单节点连接数瓶颈以及服务节点冷起场景下的高并发tcp建立连接问题。
触发器
通过有效的分片策略,在实现避免触发压力集中化的情况下,可快捷的完成服务的弹性扩缩容,实现近似无状态的水平扩展。
调度器
完全无状态的设计方案,无需考虑任务的回源问题,实现无状态的水平扩容。
接入网关
完全无状态的设计方案,可实现无状态的水平扩容,实现理论上TCP连接数无上限。
优点三:功能完备
任务管理
任务调度执行方式
支持三种触发方式
任务触发方式
日志溯源能力
日志查询
支持复杂的任务编排能力
可以实现多种场景的任务工作流。通过构建调度任务的上下游依赖关系完成复杂的任务调度逻辑。适用于大数据流程处理、任务执行工单、批量运维流程编排等应用场景。
任务编排
一个平台性的系统,从产品功能到技术架构都存在着方方面面的挑战,需要层层抽象和逐步优化才能完成一个成熟产品落地。在大数据时代,面对海量的数据和用户规模,任何一种架构设计,都面临着网络响应、 容错、幂等、数据可靠性/一致性等诸多问题。
对于平台而言,任务的可靠性是第一优先级需要考虑的,次之任务执行的时效性。合理地进行功能模块化拆分,针对不同场景,设计不同的扩展方案,保证SLA的前提下提升系统整体吞吐,实现可靠有效触达,应对频高量大的业务场景。
对于用户而言,多样化的管理手段、多维度的运行指标查询, 全方位的链路监控则是用户追求的,只有让用户从复杂混乱的定时任务场景中抽离出来,才能更加专注在业务研发。
《腾讯云中间件团队在Service Mesh中的实践与探索》
《服务治理最佳实践:如何快速依据请求参数值进行服务路由、鉴权、限流?》
《JS引擎中的Inline Cache技术内幕,你知道多少?》
扫描下方二维码关注本公众号,
了解更多微服务、API网关、消息队列的相关信息!