在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

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

  • 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:038396

评论 1 条评论

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


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

一图回顾华为云开发者联盟扫地僧见面会

华为云开发者联盟

开发者 华为云 华为云开发者联盟 企业号9月PK榜

华秋应邀精彩亮相IOTE物联网展

华秋电子

IOTE

入门有监督学习:数据、模型、度量

麦田的守望者

机器学习 有监督学习

游戏研发与产业的变革之路

百度开发者中心

#人工智能 生成式AI LLM

基于Kubernetes的Serverless PaaS稳定性建设万字总结

Serverless Devs

云计算 Serverless 运维 托管

【效率提升】maven 转 gradle 实战 | 京东云技术团队

京东科技开发者

maven 编译 Gradle 打包工具 企业号9月PK榜

深入探讨Java面试中内存泄漏:如何识别、预防和解决

程序那些事

Java 程序那些事 面试秘籍

低代码引擎 TinyEngine 正式发布!!!

OpenTiny社区

开源 前端 低代码

用友BIP开发者生态亮相华为全联接大会

YonBuilder低代码开发平台

网络隔离下实现的文件传输,现有的方式真的安全吗?

镭速

文件传输 内外网数据交换 网络隔离

INFINI Labs 产品更新 | Gateway 支持基于 Kafka 的复制能力,发布 Helm Charts 部署方式

极限实验室

Helm Charts infini gateway INFINI Console easysearch

同一份数据全域共享,HashData UnionStore实时性背后的故事

酷克数据HashData

企业应用的挑战与机遇

百度开发者中心

#人工智能 生成式AI 千帆大模型平台

警惕U盘、FTP等传统文件摆渡方式的7大弊端

镭速

文件传输 大数据传输 文件摆渡

腾讯云ES:一站式接入,数据链路可视化重磅来袭!

腾讯云大数据

ES

广东汕头等保测评机构有哪些?位于哪里?

行云管家

等保 等级保护 等保测评 汕头

深度学习之“切图”

矩视智能

深度学习

这个时代,由消费主导的敏态数据更值钱

ToB行业头条

用友第五届开发者大赛初赛晋级公示,复赛火热进行中!

YonBuilder低代码开发平台

首购2元起!CDN与加速特惠专场来啦~

火山引擎边缘云

CDN CDN加速 边缘云 CDN技术

从 Hackathon 战队到创业公司,和开发者们聊聊真实世界 AI Apps 的基础设施丨活动预告

PingCAP

数据库 开发 hackathon TiDB pingCAP

ByConity 技术详解之 ELT

字节跳动开源

大数据 开源 实时数仓 Clickhouse 数仓

【华秋干货铺】双面混装PCBA过波峰焊时,如何选用治具?

华秋电子

PCB

物联网、工业大数据平台 TDengine 与苍穹地理信息平台完成兼容互认证

TDengine

时序数据库 #TDengine 国产时序数据库

聊聊wireshark的进阶使用功能 | 京东云技术团队

京东科技开发者

网络协议 Wireshark 抓包 企业号9月PK榜

赋能游戏产业的新引擎

百度开发者中心

#人工智能 生成式AI 千帆大模型平台

哪款国产堡垒机好用便宜实惠?大家推荐一下!

行云管家

网络安全 数据安全 堡垒机 国产

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