文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录 博客园版 为您奉上珍贵的学习资源 :
免费赠送 :《尼恩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 调度等,但这些都属于进程级调度平台,很难满足更细粒度的业务调用。
海量亿级任务调度平台到底长成什么样呢?
海量百亿级任务调度平台主要特点和功能:
海量百亿级任务调度平台主要特点和功能,大致如下。
- 分布式架构: 任务调度平台采用分布式架构,可以横向扩展以应对海量任务的调度需求。通过将任务分散到多个节点上执行,提高了系统的吞吐量和稳定性。
- 高可靠性: 平台具有高可靠性,能够保证任务的准确执行。采用主备节点、任务重试机制、任务监控和告警等方式确保任务不会丢失和错过。
- 低延迟: 任务调度平台能够保证低延迟的任务执行。通过优化任务调度算法、减少任务执行的等待时间、提高任务执行的并发度等方式,降低了任务执行的延迟。
- 统一管理: 提供统一的任务管理界面和接口,方便业务方统一管理和监控各类任务。通过可视化界面展示任务执行情况、任务调度状态等信息,提供给用户更直观的操作体验。
- 灵活扩展: 平台具有良好的扩展性,可以根据业务需求灵活定制任务调度策略和调度算法。支持定制化的任务调度器、触发器、任务处理器等组件,满足不同业务场景的需求。
- 多样化任务类型: 平台支持多样化的任务类型,包括定时任务、周期任务、延时任务、异步任务等。能够满足不同业务场景下的任务调度需求。
海量亿级任务调度平台解决方案:
- 统一调度平台: 搭建统一的任务调度平台,为各业务提供统一的任务调度服务,避免各业务重复开发调度功能,提高开发效率。
- 高可靠性设计: 在平台设计中考虑高可靠性,采用集群部署、主备机制、任务重试、监控告警等方式确保任务执行的稳定性和可靠性。
- 低延迟优化: 优化任务调度算法和执行流程,减少任务调度的等待时间和执行时间,提高任务执行的效率和响应速度。
- 解耦业务和调度: 对业务和调度进行解耦,采用消息队列等方式将任务调度数据存储与业务数据存储分离,降低了业务和调度的耦合性,减少了大 key、慢 SQL 的风险。
- 技术选型: 综合考虑开源解决方案如XXL-Job、Elastic-Job、Quartz等,并结合业务需求和现有技术栈选择合适的调度平台,以满足海量任务调度的需求。
通过以上扩展,海量亿级任务调度平台能够更好地满足业务的高可靠性、低延迟、统一管理等需求,为企业提供稳定可靠的任务调度服务。
海量百亿级任务调度平台的功能性诉求
任务管理:包括任务注册、任务启停、任务更新等,
任务查询:主要用于任务追踪、问题排查、调度统计等,
任务回调:由业务提供 任务spi回调实现,调度 平台定时调用触发
海量百亿级任务调度平台的非功能性诉求
海量亿级任务调度平台的非功能性保障:
-
平台化:支持多业务接入、百亿级任务注册
-
易用性:自助化接入、运维,使用成本远低自建
-
高可靠:全年 3 个 9 可用性、p99(时延)<1s
-
高性能:支持 100w+TPM 的任务触发
综合看需要 支持百亿级任务量和百万 TPM 并发执行,并在此基础上满足三个 SLA:
- 注册\触发可用性>99.95%
- 任务触达率>99.99%
- 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