高并发调度系统设计
2024-11-11 17:53:54 0 举报
高并发调度系统设计
作者其他创作
大纲/内容
. . . . . .
执行
上下线请求
Redis锁对象
部署
业务处理
主队列扩容业务
更新
操作日志表
监控
时间轮消费逻辑
API3
结束阶段实例表_日期分表
启动校验请求事件
触发流程结束删除
备份队列扩容业务
故障容错
执行器1
启动
直接插入
实现
(6)删除
优先级分析与计算
按时间点推送
待删除队列
不参与任务的负载均衡
Redis集群
初始化锁的值(步骤个数)
外部缓存key赋值抽象
子业务1-步骤c
执行器2
提交
主队列消费逻辑
分发消息
消费/推送
拉取/执行
流转
消费业务
任务执行
任务表
WEB/API
注册/监控/上下线
监控代理
调用
数据生产
重新分发
恢复实例事件
调度系统管理器n
执行流程内更新
优先级分析和计算
(1)创建与注册
资源监控模块
推送
接收
启动校验
任务调度管理器
备份队列
消费
消费业务抽象
暂停实例事件
实例表
业务执行
步骤b逻辑
子业务n-步骤b
子业务-步骤c
(1)注册
获取key
客户端消息处理器
按指定延时拉取
Nexus
推送实例状态
1. 正在取消执行2. 取消执行成功3. 取消执行失败4. 停止中5. 停止成功6. 停止失败7. 暂停中8. 暂停成功9. 暂停失败10. 恢复中11. 恢复成功12. 恢复失败
负载均衡
不接收分片数据
CD(持续部署)
调度系统执行器1
api-dquality
Docker容器
是否收到停止通知
参数队列
数据生成业务
否
执行阶段实例表
触发
下线
实例直接杀死请求事件处理器
节点资源/排队任务反馈
已分片的待分配任务
实例操作日志同步事件处理器
子业务n-步骤a
服务监控
反馈调整
按时间分区更新
任务实例实际执行进度同步静态方法
执行器
对锁的值进行自减
更新锁的值
直接杀死事件
服务端通道管理器
实例执行服务
停止中
Mysql
(7)断电恢复
(2)推送
请求
Redis分布式锁
收集节点资源
实例执行结果事件处理器
触发状态
参数推送
锁对象1
(5)批量插入
动态延时队列
是
服务端事件处理器
业务系统
取消执行
调度系统管理器1
服务端消息处理器
停止成功
查询
子业务n-步骤c
任务实例生命周期
失败重试/日志补偿/向下兼容
调度系统执行器n
...
推送事件
事件生成业务
channel双向通信
执行器资源监控
(3)推送待删除数据
拉取
含有锁标识
启动校验失败
实例状态
执行流程结束删除
注册
生成
暂停结果事件
(7)推送
执行器可停止状态
日志文件
执行器3
结束
客户端事件处理器
统一插入四张表
按时间分区插入
执行中
nacos
反馈
启动校验流程结束删除
分发事件
动态调整
资源与待执行任务队列管理器
获取锁
任务管理
事件处理器注册
参数消费
锁的值为0
任务实例状态更新抽象方法
1. 启动校验中2. 启动校验成功3. 启动校验失败
自增键对服务索引取模
数据消费业务
实例暂停请求事件处理器
参数控制模块
队列管理器
执行状态状态
(4)同步写
异常
执行结果异步推送模块
执行业务
子业务-步骤b参数队列
调度系统管理器2
调度系统管理器
子业务1-步骤b
线程
发送
子业务-步骤c参数队列
管理器可停止状态
任务是否分发完
执行器注册/监控
实例执行请求
启动校验状态
cd部署工具
客户端事件管理器
CI(持续集成)
(7)恢复查询
操作队列
全生命周期实例表
带锁标识的下一步输入参数
取消排队任务
实例执行器
等待执行
扩容
获取并注册
生成任务实例抽象方法
5 执行
3 按时触发
cpu、内存、数据库连接数等
触发失败
争抢/创建
任务数据
......
变更实例状态
暂停实例
服务端事件管理器
执行事件
netty client
启动校验请求
待触发
创建/更新
停止失败
停止实例
异步调用
应用状态监控器
队列
1. 待触发2. 触发成功3. 触发失败
api-donline
调度任务
事件类型
生成实例
通知停止
副本数据处理
高负荷
负载均衡给执行器
启动校验请求事件处理器
调度API
Docker
轮询
实例恢复结果事件处理器
主数据副本数据处理
业务数据
启动校验阶段实例表
notifyExecutorUpdateLogStatus()
启动校验结果事件处理器
重新部署
监控与预警
子业务-步骤b
api-djobadmin
执行实际任务
反射调用注册的扩容方法
自定义结构
监听可停止状态
调度db
子业务-步骤a参数队列
分片任务数据
ManualCallBackUtil.handlerJobZxjd()
查询索引
生成数据
客户端通道管理器
gitlab
容器监控与部署工具
触发阶段实例表
待删除队列扩容业务
等待队列与系统资源
任务调度
主队列数据恢复业务
主队列
任务是否执行完
(8)触发
按创建时间分区插入/更新
调度执行器相关业务模块
容器存在
子业务数据
主数据处理业务
实例触发请求事件处理器
异步批量
数据备份与删除逻辑
任务时间轮
删除队列消费业务
缓存对象
API2
执行成功
子业务
按索引查询与分片
手动操作状态
(7)恢复
没删除的重新写入
监控agent
资源与待执行任务队列监控agent
备份队列消费业务
失败
api-doffline
notifyExecutorGenerateWaittingLog()
操作日志同步事件
成功
调度系统执行器2
锁对象n
任务实例实际结束状态同步静态方法
取消执行成功
步骤a逻辑
netty server
执行器4
按规则分片
子业务1-步骤a
调度系统相关业务模块
execute()
实例状态管理模块
实例杀死结果事件处理器
参与任务的负载均衡
任务实例管理(生命周期)
子业务1
节点n
执行结果事件
节点1
暂停成功
全生命周期实例表_日期分表
释放锁
Redis队列
实例触发事件
触发实例
maven
触发流程内更新
API1
资源监控中心
4 插入/更新
1. 心跳(HART_BEAT)2. 实例触发请求(INSTANCE_TRIGGER_REQUEST)3. 实例触发结果(INSTANCE_TRIGGER_RESPONCE)4. 实例启动检查请求(INSTANCE_START_VERIFY_REQUEST)5. 实例启动检查结果(INSTANCE_START_VERIFY_RESPONCE)6. 实例执行器排队中(INSTANCE_EXE_BLOCKING)7. 取消队列排队请求(INSTANCE_CANCEL_BLOCKING_REQUEST)8. 取消队列排队请求结果(INSTANCE_CANCEL_BLOCKING_RESPONCE)9. 实例运行中(INSTANCE_RUNNING)10. 实例结束事件(INSTANCE_RESPONCE)11. 直接杀死实例执行(INSTANCE_STRICT_KILL_REQUEST)12. 通知杀死实例执行(INSTANCE_NOTIFY_KILL_REQUEST)13. 杀死实例结果(INSTANCE_KILL_RESPONCE)14. 暂停实例执行请求(INSTANCE_PAUSE_REQUEST)15. 暂停实例执行请求结果(INSTANCE_PAUSE_RESPONCE)16. 恢复实例执行请求(INSTANCE_RESUME_REQUEST)17. 恢复实例执行结果(INSTANCE_RESUME_RESPONCE)18. 实例操作日志回调事件(INSTANCE_OPT_LOGS_REQUEST)
线程池
通知杀死事件
销毁
取消执行失败
业务数据汇总更新
子业务系统db
(3)推送
杀死结果事件
锁对象2
操作
队列消费逻辑
实例通知杀死结果事件处理器
1. 等待执行2. 执行中3. 执行失败4. 执行成功5. 超时杀死成功6. 超时杀死失败
时间轮
子业务n
启动校验结果事件
客户端推送业务
执行器注册
实例暂停结果事件处理器
1 注册
构建
暂停中
满足停止条件
本地队列
调度系统执行器3
备份日志
外部缓存key赋值
子业务-步骤a
加载
接收分片数据
应用状态控制逻辑
应用日志
业务罗辑
启动校验流程内更新
执行失败
队列注册与管理
启动校验成功
暂停失败
步骤c逻辑
超时杀死成功
汇总更新
删除
触发成功
超时杀死失败
habor
(6)删除同时返回被删除的元素
mongdb
2 扫描
实例恢复请求事件处理器
恢复实例
待删除主数据处理
(8)调用
任务实例实际业务执行抽象方法
ManualCallBackUtil.handerJobFinishe()
实例执行流程管理
服务端推送业务
取消执行中
分发
应用服务业务主体
0 条评论
下一页