2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

分布式任务调度平台的研究(上)

  • 2020-02-10
  • 本文字数:2624 字

    阅读完需:约 9 分钟

分布式任务调度平台的研究(上)

一、 分布式任务调度的背景

无论是互联网应用或者企业级应用,都充斥着大量的批处理任务。我们常常需要一些任务调度系统帮助我们解决问题。随着微服务化架构的逐步演进,单体架构逐渐演变为分布式、微服务架构。在此的背景下,很多原先的任务调度平台已经不能满足业务系统的需求。于是出现了一些基于分布式的任务调度平台。

1.1 分布式任务调度的演进

在实际业务开发过程中,很多时候我们无可避免的需要使用一些定时任务来解决问题。通常我们会有多种解决方案:使用 Crontab 或 SpringCron (当然这种情况可能机器很少而且任务简单又不是很多的情况下)。然而,当我们应用复杂度升高,定时任务数量增多且任务之间产生依赖关系时,Crontab 进行定时任务的管理配置,就会非常混乱,严重影响工作效率。这时候就会产生一系列问题:


  • 任务管理混乱,生命周期无法统一协调管理;

  • 任务之间如果存在依赖关系,难以编排;


随着互联网的发展,分布式服务架构势越来越流行。相应也需要一个分布式任务调度系统来管理分布式架构中的定时任务。

1.2 分布式任务调度架构

1559119848536069694.png


当垂直应用越来越多,应用之间交互也会越来越复杂,通常我们采用分布式或者微服务架构,将核心业务抽取出来,形成单独的服务。一个独立的微服务群体逐渐形成稳定的服务中心,使得业务应用能更快地响应多变的市场需求。此时,用于提高业务复用及整合的分布式服务框架成为关键。同时,由于服务独立,一般能做到定时任务独立的情况,任务的更改对于整体系统的影响小之又小。一般我们会采用任务与调度分离的方式(如上图所示),任务的执行逻辑无需关注调度与编排,同时可以保证执行器和调度的高可用,易于开发和维护。

1.3 分布式任务调度优势

在分布式服务架构的基础上,由于独立业务的数量可能很多,此时如果定时任务单独在该服务中实现,很可能会出现难以管理的情况,且避免不了由于定时任务的更改而导致的业务重启。因此,一个独立的分布式任务调度系统是很必要的,可以用来全局统筹管理所有的定时任务。同时,将任务的配置单独抽离出来,作为该分布式任务调度系统的功能,就能做到定时任务的更改不影响任何业务,也不影响整个系统:


  • 通过调度与任务分离的方式进行管理,大大降低了开发和维护成本;

  • 分布式部署,保证了系统的高可用性,伸缩性,负载均衡,提高了容错性;

  • 可以通过控制台部署和管理定时任务,方便灵活高效;

  • 任务都可以持久化到数据库,避免了宕机和数据丢失带来的隐患,同时有完善的任务失败重做机制和详细的任务跟踪及告警策略。

二 、分布式任务调度技术选型

2.1 分布式任务调度考虑因素

1559119877400089347.png


  • 任务编排:多个业务之间的定时任务存在流程次序

  • 任务分片:对于一个大型任务,需要分片并行执行

  • 跨平台:除了使用 Java 技术栈(SpringBoot、Spring 等)的项目之外,还有使用其他语言的应用

  • 无侵入:业务不希望与调度高耦合,只关注业务的执行逻辑

  • 故障转移:任务执行过程中遇到问题有补偿措施,减少人工介入

  • 高可用:调度系统自身必须保证高可用

  • 实时监控:实时获取任务的执行状态

  • 可视化:任务调度的操作提供可视化页面,方便使用

  • 动态编辑:业务的任务时钟参数可能变动,不希望停机部署

2.2 SIA-TASK 与其它分布式任务调度技术比较

SIA 是宜信公司基础开发平台 Simple is Awesome 的简称,SIA-TASK(微服务任务调度平台)是其中的一项重要产品,SIA-TASK 契合当前微服务架构模式,具有跨平台,可编排,高可用,无侵入,一致性,异步并行,动态扩展,实时监控等特点。


开源地址:https://github.com/siaorg/sia-task


下面我们先对比市场上主流的开源分布式任务调度框架,分析其优缺点,然后再说我们的技术选型。


  • Quartz: Quartz 是 OpenSymphony 开源组织在任务调度领域的一个开源项目,完全基于 Java 实现。该项目于 2009 年被 Terracotta 收购,目前是 Terracotta 旗下的一个项目。相比于 JDK 或 Spring 提供的定时任务,Quartz 对单个任务的控制基本做到了极致,以其强大功能和应用灵活性,在企业应用中发挥了巨大的作用。然而 Quartz 并不支持任务的编排(任务之间有依赖),而且不支持任务分片。

  • TBSchedule: TBSchedule 是一个支持分布式的调度框架,能让一种批量任务或者不断变化的任务,被动态的分配到多个主机的 JVM 中,不同的线程组中并行执行。基于 ZooKeeper 的纯 Java 实现,由 Alibaba 开源。TBSchedule 侧重于任务的分发,支持任务分片,但是没有任务编排,也不是跨平台的。

  • Elastic-Job: Elastic-Job 是当当开源的一个分布式调度解决方案,由两个相互独立的子项目 Elastic-Job-Lite 和 Elastic-Job-Cloud 组成。Elastic-Job 支持任务分片(作业分片一致性),但是没有任务编排,也不是跨平台的。

  • Saturn: Saturn 是唯品会开源的分布式,高可用的调度服务。Saturn 在 Elastic-Job 做二次开发,支持监控,任务分片,跨平台,但是没有任务编排。

  • Antares: Antares 是基于 Quartz 的分布式调度,支持分片,支持树形任务依赖,但是不是跨平台的。

  • Uncode-Schedule: Uncode-Schedule 是基于 Zookeeper 的分布式任务调度组件。支持所有任务在集群中不重复,不遗漏的执行。支持动态添加和删除任务。但是不支持任务分片,也没有任务编排,还不是跨平台的。

  • XXL-JOB: XXL-JOB 是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。XXL-JOB 支持分片,简单支持任务依赖,支持子任务依赖,不是跨平台的。


下面我们简单对比下 SIA-TASK 与这些任务调度框架:


            | 任务编排  | 任务分片 | 跨平台  | 高可用 | 故障转移 | 实时监控 
复制代码


--------------- | ----- | ---- | ---- | — | ---- | -----


SIA-TASK | √ | √ | √ | √ | √ | √


Quartz | × | × | .NET | √ | × | API 监控


TBSchedule | × | √ | × | √ | √ | √


Elastic-Job | × | √ | × | √ | √ | √


Saturn | × | √ | √ | √ | √ | √


Antares | √ | √ | × | √ | √ | √


Uncode-Schedule | × | × | × | √ | √ | √


XXL-JOB | 子任务依赖 | √ | × | √ | √ | √


可以发现,这些调度框架基本上都支持高可用、故障转移与实时监控等功能,但是对于任务编排、任务分片与跨平台等功能的支持各有侧重点。这里 SIA-TASK 将全面支持这些功能。


本文转载自宜信技术学院网站。


原文链接:http://college.creditease.cn/detail/253


2020-02-10 21:038300

评论 1 条评论

发布
用户头像
推荐一个强大的分布式任务调度与计算框架PowerJob,支持CRON、API、固定频率、固定延迟等多种调度策略,支持MapReduce分布式计算,支持工作流任务编排(DAG),功能强大,文档齐全,接入简单!


项目地址:https://github.com/KFCFans/PowerJob
2020-11-08 10:24
回复
没有更多了
发现更多内容

开发者说|H-RDT:基于人类操作数据的跨本体机器人学习

地平线开发者

自动驾驶 算法工具链 地平线征程6

使用Prodfiler优化eBPF编译器性能:零代码修改实现近2倍提升

qife122

编译器 ebpf profiling

Node.js HTTP请求走私漏洞利用(CVE-2025-23167)

qife122

node.js 网络安全 漏洞利用

YashanDB数据库数据高可用与灾难恢复实践

数据库砖家

YashanDB数据库数据同步及异步处理的特点比较

数据库砖家

在AI技术唾手可得的时代,挖掘新需求成为核心竞争力——某知名PHP AI框架需求洞察

qife122

ai框架 PHP开发

YashanDB数据库数据同步与复制技术详解

数据库砖家

YashanDB数据库数据访问安全策略及最佳实践

数据库砖家

YashanDB数据库数据同步机制与实现技术

数据库砖家

AI如何重塑网络路由与交换技术

qife122

人工智能 网络设备

创建南网特色科技成果转化生态中枢——南方电网创新加速器首期路演活动成功举办

新消费日报

基于YOLOv8的X光安检图像智能检测系统:八类违禁品/可疑物精准识别与实战部署

申公豹

yolo

干货:Gemini与jobleap.cn联动,一种邪修找工作的新方法,让你面试成功率立即提升500%!

Y11

求职 找工作 应届生 找实习

微软安全更新指南新增安全公告标签,强化漏洞管理透明度

qife122

微软安全 安全公告

网龙公布 2025 年中期业绩

财见

极兔速递2025上半年经调整净利润同比大增147.1%

财见

YashanDB数据库数据迁移的全面指南与步骤

数据库砖家

YashanDB数据库数据恢复与备份技巧

数据库砖家

YashanDB数据库数据回滚及错误恢复操作详解

数据库砖家

YashanDB数据库数据迁移的最佳实践

数据库砖家

高性能通知系统架构设计与运维

俞凡

架构

大数据-83 Spark RDD详解:特性、优势与典型应用场景

武子康

Java 大数据 flink spark 分布式

工厂为什么要上MES系统,上MES系统的几大核心作用

万界星空科技

数字化转型 制造业 智能制造 mes 生产管理MES系统

YashanDB数据库数据表设计最佳实践与性能考量

数据库砖家

2000年模糊测试技术在Windows系统中的重现与安全影响

qife122

漏洞挖掘 模糊测试

YashanDB数据库数据建模与设计规范详解

数据库砖家

AI中的潜意识学习:大语言模型隐藏的安全隐患

qife122

神经网络 AI安全 潜意识学习

新手必看:如何使用问小白生成mp.jobleap4u.com站点简介(含精品prompt分享)

Y11

求职 找工作 招聘 应届生 大学生

绕过使用__PSLockDownPolicy时的约束语言模式限制

qife122

PowerShell 约束语言模式

为什么说jobleap.cn是最适合大学生找工作的App

Y11

求职 找工作 招聘 应届生 大学生

分布式任务调度平台的研究(上)_语言 & 开发_Geek_811f28_InfoQ精选文章