简介:本文分别对任务调度平台的资源定义、可视化管控能力、分布式批处理能力进行了简述,并基于 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. epoll反应堆理解

    https://www.aliyundrive.com/s/oBvP7BcjsCS https://blog.csdn.net/weixin_36750623/article/details/8354 ...

  2. Android 开发day1

    下载了安卓开发软件 Android studio 下载过程中遇到了,C盘默认安装路径不匹配问题,因为我的系统文件是中文的,软件是国外的软件,导致了他不让我安装,我还是最后在C盘创建了一个文件后,直接安 ...

  3. Kotlin 协程基础使用学习

    原文: Kotlin 协程基础使用学习-Stars-One的杂货小窝 本篇阅读可能需要以下知识,否则可能阅读会有些困难 客户端开发基础(Android开发或JavaFx开发) Java多线程基础 ko ...

  4. django(图书管理系统)

    一.表的设计 from django.db import models # Create your models here. class Book(models.Model): title = mod ...

  5. 自动化瓦力多渠道打包python脚本

    自动化瓦力多渠道打包python脚本 目录介绍 1.本库优势亮点 2.使用介绍 3.注意要点 4.效果展示 5.其他介绍 0.首先看看我录制的案例演示 如下所示,这段python代码很简单,工具十分强 ...

  6. Web Audio API 第2章 完美的播放时机控制

    Web Audio API 第2章 完美的播放时机控制 相较于 标签, Web Audio API 拥有低延迟精确定时模型. 低延时对于游戏或交互式应用来说非常重要,因为交互操作时要快速响应给用户的听 ...

  7. 性能测试系列:Jmeter使用记录

    jmeter配置环境变量vi /etc/profileexport PATH=$PATH:/tmp/jmeter/apache-jmeter-5.4.1/binsource /etc/profile ...

  8. C# OpenCvSharp+ 微信二维码引擎实现二维码识别

    微信开源了其二维码的解码功能,并贡献给 OpenCV 社区.其开源的 wechat_qrcode 项目被收录到 OpenCV contrib 项目中.从 OpenCV 4.5.2 版本开始,就可以直接 ...

  9. Windows上部署spring boot jar项目

    1.下载地址:https://github.com/winsw/winsw/releases 下载红色框内三个文件就够了. sample-allOptions.xml 所有配置参考 sample-mi ...

  10. 开源相机管理库Aravis学习(一)——安装

    目录 前言 Aravis简介 依赖关系说明 安装过程 meson安装 aravis源文件下载 构建和安装aravis 视频查看器 安装过程中遇到的问题 meson版本过低 CMake版本过低 缺少GS ...