简介:本文分别对任务调度平台的资源定义、可视化管控能力、分布式批处理能力进行了简述,并基于 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. day02-自己实现Mybatis底层机制-01

    自己实现Mybatis底层机制-01 主要实现:封装SqlSession到执行器+Mapper接口和Mapper.xml+MapperBean+动态代理Mapper的方法 1.Mybatis整体架构分 ...

  2. Android Studio源码导入与调试

    从事Android开发都需要涉及到Android源码的阅读,特别是系统应用或者Framework开发,读代码的时间远远比写代码的时间更多. 一. 生成iml与ipr 在Android Studio中导 ...

  3. C# 12 拦截器 Interceptors

    拦截器Interceptors是一种可以在编译时以声明方式替换原有应用的方法. 这种替换是通过让Interceptors声明它拦截的调用的源位置来实现的. 您可以使用拦截器作为源生成器的一部分进行修改 ...

  4. linux上pip install mysqlclient报错

    linux上pip install mysqlclient报错 django连接mysql数据库时 乱糟糟的 一大片红色报错,查了半天资料,失败了无数次,最终终于成功 先用以下代码: sudo apt ...

  5. KingbaseES V8R6 运维案例 -- sys_filenode.map故障案例

    ​ 案例说明: 数据库下的sys_filenode.map文件被破坏,导致此数据库无法连接访问. Nail表(内核系统表)Relfilenode的存储机制: 经过研究发现,在数据目录里存在着pg_fi ...

  6. net.sf.json.JSONObject,将MySQL数据库的数据读出转化为json数据

    maven依赖: 1 <dependency> 2 <groupId>net.sf.json-lib</groupId> 3 <artifactId>j ...

  7. 白话分解入门操作系统到 Java

    一.完成一个任务需要什么? 时间 + 资源 + 处理能力 时间就是时间. 资源就是资源. 处理能力就是能够利用时间和资源完成任务的主体. 二.关于操作系统 处理能力就是cpu. 资源就是存储. 时间就 ...

  8. SQL 递归核心思想(递归思维)

    目前很缺递归思维,主要是算法代码写得少,本篇记录下以 PostgreSQL 代码举例(主要是非常喜欢这款性能小钢炮数据库). 树状查询不多说,很简单大家基本都会,主要讲 cte 代码递归实现不同需求. ...

  9. #容斥,完全背包#洛谷 1450 [HAOI2008]硬币购物

    题目 分析 直接多重背包应该会T掉,考虑硬币的种类比较少. 如果没有硬币数量的限制直接完全背包就可以了, 不然如果限制了硬币的数量那么第 \(d+1\) 次取这个硬币就不合法, 所以要减去 \(dp[ ...

  10. OpenHarmony Camera源码分析

    一.简介 当前,开源在科技进步和产业发展中发挥着越来越重要的作用,OpenAtom OpenHarmony(简称"OpenHarmony")赋予了开发者孕育创新的种子,也为数字化产 ...