首页 > 其他分享 >从0到1,百亿级任务调度平台的架构与实现

从0到1,百亿级任务调度平台的架构与实现

时间:2024-05-15 10:20:42浏览次数:22  
标签:执行器 架构 百亿 任务 调度 job new 任务调度 xxl

文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录 博客园版 为您奉上珍贵的学习资源 :

免费赠送 :《尼恩Java面试宝典》 持续更新+ 史上最全 + 面试必备 2000页+ 面试必备 + 大厂必备 +涨薪必备
免费赠送 :《尼恩技术圣经+高并发系列PDF》 ,帮你 实现技术自由,完成职业升级, 薪酬猛涨!加尼恩免费领
免费赠送 经典图书:《Java高并发核心编程(卷1)加强版》 面试必备 + 大厂必备 +涨薪必备 加尼恩免费领
免费赠送 经典图书:《Java高并发核心编程(卷2)加强版》 面试必备 + 大厂必备 +涨薪必备 加尼恩免费领
免费赠送 经典图书:《Java高并发核心编程(卷3)加强版》 面试必备 + 大厂必备 +涨薪必备 加尼恩免费领

免费赠送 资源宝库: Java 必备 百度网盘资源大合集 价值>10000元 加尼恩领取


从0到1,百亿级任务调度平台的架构与实现

尼恩特别说明: 尼恩的文章,都会在 《技术自由圈》 公号 发布, 并且维护最新版本。 如果发现图片 不可见, 请去 《技术自由圈》 公号 查找

尼恩:百亿级海量任务调度平台起源

在40岁老架构师 尼恩的读者交流群(50+)中,经常性的指导小伙伴们改造简历。

经过尼恩的改造之后,很多小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试机会,拿到了大厂机会。

这些机会的来源,主要是尼恩给小伙伴 改造了简历,植入了亮点项目、黄金项目。

尼恩的 亮点项目、黄金项目 需要持续迭代。

下一个亮点项目、黄金项目是:百亿级海量任务调度平台。

于是,尼恩组织小伙伴开始研究和 设计 《百亿级海量任务调度平台》,帮助大家打造一个新的黄金项目,实现大厂的梦想。

百亿级海量任务调度平台

海量亿级任务调度平台是为了满足各种业务异步定时执行需求而设计的一套分布式任务调度系统。

它不仅能够满足传统的定时任务执行需求,还可以应对海量任务、高可靠、低延迟等特点。

百亿级海量任务调度平台业务诉求:

在日常开发中会经常遇到一些需要异步定时执行的业务诉求,典型的使用场景如:

  • 超时未支付订单关单
  • 每隔 2h 更新好友排行榜
  • 3.22 日 17 点《xx》剧上线等。

目前业务侧多基于以下思路来快速搭建一个调度系统,mysql 或者 redis 队列存储待执行任务,通过 crontab 定时触发应用完成“捞取、计算、执行等操作”。

不难看出存在几类亟待解决问题:

1)缺少统一的调度平台导致各业务重复开发;

2)简易版调度实现在任务吞吐、调度时效上缺少保障;

3)业务和调度数据强耦合存储给线上稳定性引入大 key、慢 sql 风险。

目前存在多类开源解决方案如 XXL-Job 、 Elastic-Job、quartz 调度等,但这些都属于进程级调度平台,很难满足更细粒度的业务调用。

海量亿级任务调度平台到底长成什么样呢?

海量百亿级任务调度平台主要特点和功能:

海量百亿级任务调度平台主要特点和功能,大致如下。

  1. 分布式架构: 任务调度平台采用分布式架构,可以横向扩展以应对海量任务的调度需求。通过将任务分散到多个节点上执行,提高了系统的吞吐量和稳定性。
  2. 高可靠性: 平台具有高可靠性,能够保证任务的准确执行。采用主备节点、任务重试机制、任务监控和告警等方式确保任务不会丢失和错过。
  3. 低延迟: 任务调度平台能够保证低延迟的任务执行。通过优化任务调度算法、减少任务执行的等待时间、提高任务执行的并发度等方式,降低了任务执行的延迟。
  4. 统一管理: 提供统一的任务管理界面和接口,方便业务方统一管理和监控各类任务。通过可视化界面展示任务执行情况、任务调度状态等信息,提供给用户更直观的操作体验。
  5. 灵活扩展: 平台具有良好的扩展性,可以根据业务需求灵活定制任务调度策略和调度算法。支持定制化的任务调度器、触发器、任务处理器等组件,满足不同业务场景的需求。
  6. 多样化任务类型: 平台支持多样化的任务类型,包括定时任务、周期任务、延时任务、异步任务等。能够满足不同业务场景下的任务调度需求。

海量亿级任务调度平台解决方案:

  1. 统一调度平台: 搭建统一的任务调度平台,为各业务提供统一的任务调度服务,避免各业务重复开发调度功能,提高开发效率。
  2. 高可靠性设计: 在平台设计中考虑高可靠性,采用集群部署、主备机制、任务重试、监控告警等方式确保任务执行的稳定性和可靠性。
  3. 低延迟优化: 优化任务调度算法和执行流程,减少任务调度的等待时间和执行时间,提高任务执行的效率和响应速度。
  4. 解耦业务和调度: 对业务和调度进行解耦,采用消息队列等方式将任务调度数据存储与业务数据存储分离,降低了业务和调度的耦合性,减少了大 key、慢 SQL 的风险。
  5. 技术选型: 综合考虑开源解决方案如XXL-Job、Elastic-Job、Quartz等,并结合业务需求和现有技术栈选择合适的调度平台,以满足海量任务调度的需求。

通过以上扩展,海量亿级任务调度平台能够更好地满足业务的高可靠性、低延迟、统一管理等需求,为企业提供稳定可靠的任务调度服务。

海量百亿级任务调度平台的功能性诉求

任务管理:包括任务注册、任务启停、任务更新等,

任务查询:主要用于任务追踪、问题排查、调度统计等,

任务回调:由业务提供 任务spi回调实现,调度 平台定时调用触发

图片

海量百亿级任务调度平台的非功能性诉求

海量亿级任务调度平台的非功能性保障:

  • 平台化:支持多业务接入、百亿级任务注册

  • 易用性:自助化接入、运维,使用成本远低自建

  • 高可靠:全年 3 个 9 可用性、p99(时延)<1s

  • 高性能:支持 100w+TPM 的任务触发

综合看需要 支持百亿级任务量和百万 TPM 并发执行,并在此基础上满足三个 SLA:

  1. 注册\触发可用性>99.95%
  2. 任务触达率>99.99%
  3. p99(触达延时)<1s

百亿级任务量和百万 TPM 并发的架构方案

数据存储架构:

重点解决两个问题数据可靠和海量存储,可靠的存储保障任务不丢、任务高触达率,鉴于 mysql 在持久化以及 master-slave 部署架构对高可用支持表现,优先选用 mysql 作为底层存储;

但单 DB 在 TPS 性能、数据量上存在瓶颈,这里选用分库分表策略,通过增加数据库实例打平数据分布以提升整体性能和存储上限;

实时性架构:

类似多级缓存的思路,为保障任务触发时效(p99<1s)这里的设计思路“任务前置”,拆解任务触发步骤,将任务捞取、计算工作尽量提前完成,通过毫秒级延迟的内存时间轮最终触发,保障任务的触发时效性;

高并发:

采用可伸缩架构设计,存储层尽量拆分为多个逻辑库,前期通过合并部署降低成本但保留多个逻辑库隔离能力,未来支持快速迁移独立部署以提升性能;

应用层采用多级调度思路,按数据分片将大任务拆分成小粒度任务动态根据计算节点数完成分配,实现通过增加计算节点快速提升任务触发能力;

高可用:

MTTR 分段治理思路,架构层在设计阶段考虑到单点、单机房风险,不管是存储层还是应用层都采用多机多活架构,并支持 HA 自动切换大大缩短 MTTF 时效;

立体化的监控+拨测能力,覆盖从注册到触发全流程波动、成功率、耗时、延迟多维度监控,缩短 MTTI 时效;

MTTR 是指 Mean Time to Repair,即平均修复时间。

在系统运维和故障处理领域,MTTR 是一个重要的性能指标,用于衡量系统故障发生后,从故障发生到恢复正常运行所花费的平均时间。

MTTR 的计算方式为:

标签:执行器,架构,百亿,任务,调度,job,new,任务调度,xxl
From: https://www.cnblogs.com/crazymakercircle/p/18193272

相关文章

  • 架构每日一学 6:作为架构师,你必须学会寻找商业模式
    本文首发于公众平台:腐烂的橘子在前面的文章中,我们已经讲了架构师的两条生存法则,第一条是有且仅有一个目标,感兴趣的可以看一下原文:架构每日一学2:架构师六个生存法则之一:架构必须有且仅有一个目标(一)第二条生存法则是架构活动要顺应人性:架构每日一学5:拼多多如何通过洞察人性......
  • 架构,七层协议,socket
    Ⅰ软件开发架构【一】架构分类【1】C/S架构C:client(客户端)S:server(服务端)'''类比学习: 客户端相当于是需要体验服务的客人 服务端相当于是对外提供服务的店面 我们手机上下载的各种app其实就是各大厂家的客户端 打开app使用该功能的时候就是相当于是基于网络去到......
  • KylinV10SP2实现ARM和x86架构系统PXE部署(S3)
    KylinV10SP2实现ARM和x86架构系统PXE部署(S3)本文介绍在esxi(虚拟化)中Centos7.9操作系统上部署PXE服务端,集成麒麟系统安装源,TFTP服务,DHCP服务,HTTP服务,能够向裸机发送PXE引导程序、Linux内核、启动菜单等数据,以及提供安装文件。系统引导模式分为uefi引导以及legacy引导,本文主要UEFI,......
  • 微前端架构
    微前端微前端是一种软件架构,类似于组件级应用,微前端可应用于项目技术栈的更新,独立发布,每个微应用都可以使用不同的框架实现微前端1.多个微应用之间的组合:微应用被注册在容器应用中2.微应用中实现路由:微前端架构中,路由发生变化时,容器应用根据路由匹配微前端应用,匹配到微前端应......
  • MPP架构和hadoop架构比对
    架构比对简单一句描述。mpp架构,就是找一群和自己能力差不多的任一起做事,每个人做的事情是一致的。hadoop架构,就是找一群能力差一些的人,但只需要他们每个人只做一部分工作。举例说明一个特色小饭店如何成为连锁餐饮巨头。一个做宫保鸡丁的夫妻店生意越来越好,顾客经常吃不......
  • Cron表达式-任务调度
    当我们谈论任务调度时,cron(Cron表达式)是一种非常常见和常用的方式。它是一种用于在特定时间间隔内定期执行任务的调度表达式。cron表达式由6个字段组成,分别代表分钟、小时、日期、月份、星期几和要执行的命令或脚本。下面是cron表达式的每个字段的含义:09***command分钟(0-5......
  • 中电金信:专题报告·商业银行对公数字化转型体系架构及实践拆解
    当今,数字化转型已然成为商业银行发展的关键动力,在这个数字时代,对公业务数字化转型更是势在必行。 基于此,中电金信发布《商业银行对公数字化转型专题报告》(简称《报告》),针对对公数字化转型进行了专题研究。报告对主要商业银行对公数字化转型进行了深入的业务调研和分析总结,从对......
  • 按图索骥,快速做好架构图
    架构图是程序员必备的技能之一。很多同学觉得老是画不好架构图,且经常无从下手,那就看看下面这篇文章,笔者整理分享了关于架构图的相关内容,需要了解相关知识的同学可以进来看看哦!许多的小伙伴坦言画不好架构图,因为有很多困难阻碍了他们的进阶之路。当你想用一张或几张图来描述你......
  • Java-SSM-Day01 Maven实战案例:构建微服务Maven工程架构
    1.项目需求与结构分析:  需求案例:搭建一个电商平台项目,该平台包括用户服务、订单服务、通用工具模块等。项目架构:1.用户服务:负责处理用户相关的逻辑,例如用户信息的管理、用户注册、登录等。2.订单服务:负责处理订单相关的逻辑,例如订单的创建、订单支付、退货、订单查......
  • openGauss 架构
    架构发布者上的更改会在它们发生时实时传送给订阅者。订阅者按照数据在发布者上被提交的顺序应用数据,这样任意单一订阅中的发布的事务一致性才能得到保证。逻辑复制被构建在一种类似于物理流复制的架构上。它由“walsender”和“apply”进程实现。walsender进程开始对WAL的逻辑......