简介:本文分别对任务调度平台的资源定义、可视化管控能力、分布式批处理能力进行了简述,并基于 SchedulerX 的能力结合实际业务场景提供了一些基础参考案例。希望通过上述内容能让大家方便地熟悉任务调度平台接入使用概况,对于现有用户也可结合自身团队特点进行平台资源管控隔离,以及在产品业务量增长后通过分布式批处理能力来提升处理效率。

作者:千习

前言

在各类业务系统场景中,存在着大量定时触发、周期触发运行指定业务任务的需求场景,而分布式任务调度中间件平台存在的意义就是为管理支撑上述场景而存在。在 Linux 中的 crontab、Java 中的 Timer 等等都涉及周期性定时调度运行任务来完成一系列自动化处理的业务场景。

周期定时运行是任务调度最为基础的特性,但随着业务扩张和发展对于任务调度中间件平台的能力将会提出更高要求。在传统业务系统中 Quartz 以及 Spring scheduling 包以框架集成方式给业务开发定时任务提供了很多便利,但伴随各个业务应用分布式和微服务化部署后,大量分散的定时任务散部在各个业务应用系统之中很难对全局所有任务的统一可视化监控运维管理,分布式任务调度中间件平台将对各个定时任务进行有效地统一可视化管控。

分布式任务调度平台以高可靠的定时任务调度为核心基础,以可视化管控为核心价值体现,结合业务发展趋势围绕这两个基本要素进行平台能力拓展。

SchedulerX 概览

平台资源管理

站在全局面向所有业务应用统一运维管控视角,对团队和部署环境抽象了“空间”概念来进行资源管理隔离,对业务应用和机器集群进行了一层抽象称为“应用分组”。每一个业务应用可在调度平台上创建对应应用分组与其实际对业务应用程序进行对接,从而实现各个业务团队在统一的平台上互不干涉的分别管控各自业务团队的任务。并且在阿里云上基于 RAM 权限策略,可统一进行合理的资源权限管控隔离。

通过上述资源模型业务平台架构管理者可根据自身团队的组织特点,进行空间和应用的合理规划以及权限策略配置,清晰地实现任务调度资源的访问控制隔离和全局性管控。

平台可视化管控

任务是任务调度平台管控调度操作的基本单元,任务运行可视化使原本藏在各个业务应用中默默奔跑的任务得以重见天日,让每一个任务的运行状况和执行结果得以展现和提醒。在没有可视化的情况下,任务运行状态以及运行结果将无从知晓或者是很难被发觉,甚至于经过大量业务迭代发展之后,应用系统中存在多少定时任务都无法进行规范化管理。

分布式分片批处理

随着业务体量推进发展,在一些定时调度任务场景下会伴随着大数据量分布式批量处理需求。协调多个机器来定期完成大批量数据处理也成为了任务调度平台重要功能特性,通过分布式批处理模型,用户可简单地实现大批量数据处理效率提升。

简单运用场景

下面将基于任务调度平台,针对性地列举几个简单的业务使用场景,以初步了解在任务调度平台上都能做些什么事情。

基于广播集群运维场景

在广播模式下,创建的调度任务会以给定的周期频率将任务运行的指令下发给业务应用集群或安装了 Agent 的 ECS 集群,当新扩容加入的资源也会后随后动态广播到。基于该功能特性,用户可以架构出很多自定义的使用场景,例如:

  • 日志/临时数据定期清理:对业务产生的日志或临时文件进行定期清理。
  • 服务器检测:用户可通过广播shell脚本快速构建简单的服务器磁盘/内存/CPU 等健康检测场景。
  • 业务缓存刷新:对于存在本地缓存的业务场景,可定期进行缓存刷新以及指定的业务应用服务预热处理。
  • 业务服务检测:用户可自定义各种业务类型指标采集判断,基于调度平台灵活构建轻量级的业务监控。

定时业务场景

各行业业务场景中,在任务调度平台上进行定时任务处理,是最为广泛的业务形式,例如:

  • 定期发送消息提醒:缴款缴费提醒、积分到期提醒、客户员工生日祝福提醒、交易订单处理通知等等。
  • 定期数据同步处理:员工组织结构信息同步、业务基础信息同步、定时每天业务数据批量清算、交易订单超时处理等等。
  • 定期数据生成推送:月/季/年度报表生成推送、活动公告定期推送、消费账单定期生成推送等等。

当上述业务需处理的数据体量逐渐扩大后,原本单机处理模式下处理效率瓶颈会慢慢出现,此时任务调度的分布式集群批处理的能力将可以发挥集群协同能力来进行大批量的数据并行处理。

分布式批处理场景

基于业务批量处理能力,当实时业务量较大时用户可以配合服务降级策略构建业务定期批量补偿任务,来实现峰值业务处理能力提升,以确保业务高峰时期核心业务的吞吐能力。作为业务系统平台的架构设计者,如果能将定时分布式批处理能力与具体业务进行有效结合将充分发挥系统整体的业务处理能力和稳定性。下面对相关业务使用场景进行抽象总结阐述以供参考。

在常规场景下核心交易服务可能会通过 RPC/MQ 完成下游服务的调用处理。但这种模式下当业务量上涨时会产生一些问题,RPC 下游服务能力会影响核心服务吞吐能力,对 MQ 依赖时需要保证消息投递正常且消费端正确处理,这些都会成为核心服务处理能力提升的瓶颈。因此在业务接受范围内,采取业务服务间彻底解耦的定期批处理补偿的方式将大大提升处理效率,并且通过幂等性可重复执行将提升下游服务可靠性保障,同时结合分布式批处理模型可对数据进行批量加载、批量处理以降低 DB 交互压力。同时在架构设计上该补偿模式可与微服务服务降级配套整合使用。

快速接入 SchedulerX

创建应用分组

进入任务调度控制台后选择“公网”region,首先在“应用管理”->创建应用,该应用信息将会成为后续步骤中业务应用程序、Agent 与任务调度平台直接建立对接关系的核心元素。

SpringBoot 工程引入 SchedulerX

在本地构建的 SpringBoot 工程中添加如下依赖,并在 Properties 中添加对应控制台创建的应用分组配置信息,启动应用即可完成业务应用与任务调度平台关系建立。

<dependencies>
<dependency>
<groupId>com.aliyun.schedulerx</groupId>
<artifactId>schedulerx2-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
</dependencies>
# 公有云公网环境
spring.schedulerx2.namespace=aad167f6-8bee-41a7-ba41-*********
spring.schedulerx2.endpoint=acm.aliyun.com
spring.schedulerx2.groupId=qianxi.text
spring.schedulerx2.appKey=lYgR6qq**********

其他说明

完成上述步骤后,可进行后续应用下具体业务定时任务创建和开发,后续使用详见官方手册,点击此处即可前往!

总结

本文分别对任务调度平台的资源定义、可视化管控能力、分布式批处理能力进行了简述,并基于 SchedulerX 的能力结合实际业务场景提供了一些基础参考案例。希望通过上述内容能让大家方便地熟悉任务调度平台接入使用概况,对于现有用户也可结合自身团队特点进行平台资源管控隔离,以及在产品业务量增长后通过分布式批处理能力来提升处理效率。

后续 SchedulerX 将继续提升可视化管控能力来服务企业级定时任务管理需要,并且平台管控和定时调度服务能力将会逐步兼容市面上常见开源组件客户端。我们也会结合实际场景,继续进行逐个剖析讲解,敬请期待。

原文链接

本文为阿里云原创内容,未经允许不得转载。

SchedulerX 如何帮助用户解决分布式任务调度难题?的更多相关文章

  1. 转载《分布式任务调度平台XXL-JOB》

    <分布式任务调度平台XXL-JOB>       博文转自 https://www.cnblogs.com/xuxueli/p/5021979.html 一.简介 1.1 概述 XXL-J ...

  2. 分布式任务调度平台XXL-JOB

    <分布式任务调度平台XXL-JOB>       一.简介 1.1 概述 XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是开发迅速.学习简单.轻量级.易扩展.现已开放源代码并 ...

  3. 《分布式任务调度平台XXL-JOB》

    一.简介 1.1 概述 XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是开发迅速.学习简单.轻量级.易扩展.现已开放源代码并接入多家公司线上产品线,开箱即用. 1.2 特性 1.简单:支 ...

  4. XXL-JOB分布式任务调度平台安装与部署

    配XXL-JOB分布式任务调度平台安装与部署

  5. 宜信开源|分布式任务调度平台SIA-TASK的架构设计与运行流程

    一.分布式任务调度的背景 无论是互联网应用或者企业级应用,都充斥着大量的批处理任务.我们常常需要一些任务调度系统来帮助解决问题.随着微服务化架构的逐步演进,单体架构逐渐演变为分布式.微服务架构.在此背 ...

  6. ElasticJob分布式任务调度应用v2.5.2

    为何要使用分布式任务调度 **本人博客网站 **IT小神 www.itxiaoshen.com 演示项目源码地址** https://gitee.com/yongzhebuju/spring-task ...

  7. Java定时器演进过程和生产级分布式任务调度ElasticJob代码实战

    为何要使用分布式任务调度 **本人博客网站 **IT小神 www.itxiaoshen.com 演示项目源码地址** https://gitee.com/yongzhebuju/spring-task ...

  8. 开源分布式任务调度系统就选:DolphinScheduler

    分布式任务调度这个话题是每个后端开发和大数据开发都会接触的话题.因为应用场景的广泛,所以有很多开源项目专注于解决这类问题,比如我们熟知的xxl-job. 那么今天要给大家推荐的则是另一个更为强大的开源 ...

  9. 新一代分布式任务调度框架:当当elastic-job开源项目的10项特性

    作者简介: 张亮,当当网架构师.当当技术委员会成员.消息中间件组负责人.对架构设计.分布式.优雅代码等领域兴趣浓厚.目前主导当当应用框架ddframe研发,并负责推广及撰写技术白皮书.   一.为什么 ...

  10. 分布式任务调度系统xxl-job搭建

    为解决分布式环境下定时任务的可靠性,稳定性,只执行一次的特性,我找到了个大众点评开源的分布式调度任务解决完整系统,下面我将一步步深入解读该系统,从基本的使用到源码的探究 下载 https://gith ...

随机推荐

  1. 没有有线网卡的笔记本如何在PVE下All in one?—NAS + Linux +win下载机

    没有有线网卡的笔记本在PVE下All in one | NAS + Linux + Win下载机 (保姆级未完成版) 目录: 1.前言 2.PVE的安装 3.PVE联网前的准备工作 4.PVE使用无线 ...

  2. 记录--基于css3写出的流光登录(注释超详细!)

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 完整效果 对基本的表单样式进行设置 这里设置了基本的表单样式,外层用了div进行包裹,重点是运用了两个i元素在后期通过css样式勾画出一条 ...

  3. node-xlsx处理excel

    引用node-xlsx npm install node-xlsx -save 文件中引用 const xlsx = require('node-xlsx') 读取excel const sheet ...

  4. MongoDB java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.Integer

    详细报错如下: java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.Integer     at or ...

  5. java实战字符串2:中英字符串相互转换

    题目描述 输入字符串为中文拼音号码串或者英文号码串,如果输入是中文拼音号码串则转成英文号码串,如果输入是英文号码串则转成中文号码串. 特殊情况是英文号码串会出现Double + 英文数字或者拼音数值. ...

  6. #二分,spfa#洛谷 1948 [USACO08JAN] Telephone Lines S

    题目 分析 二分答案,设高于答案的边权为1,否则为0 然后如果最短路答案\(\leq k\)那么这个答案符合要求 代码 #include <cstdio> #include <cct ...

  7. #李超线段树,树链剖分#洛谷 4069 [SDOI2016]游戏

    题目 分析 就是把线段扔到了树上,注意区间查询要比较两个端点的函数值, 把区间赋值转换成两部分,从起点到LCA的区间是斜率为负数的线段, 从终点到LCA的区间是斜率为正数的线段. 代码 #includ ...

  8. 基于ArkUI框架开发-ImageKnife渲染层重构

      ImageKnife是一款图像加载缓存库,主要功能特性如下: ●支持内存缓存,使用LRUCache算法,对图片数据进行内存缓存. ●支持磁盘缓存,对于下载图片会保存一份至磁盘当中. ●支持进行图片 ...

  9. [llama懒人包]ChatGPT本地下位替代llama-7b,支持全平台显卡/CPU运行

    LLAMA的懒人包: 链接: https://pan.baidu.com/s/1xOw8-eP8QB--u6y644_UPg?pwd=0l08 提取码:0l08 模型来源:elinas/llama-7 ...

  10. 学会在 C++ 中使用变量:从定义到实践

    C++ 变量 变量是用于存储数据值的容器. 在 C++ 中,有不同类型的变量(使用不同的关键字定义),例如: int - 存储整数(没有小数点),例如 123 或 -123 double - 存储浮点 ...