调度系统设计
2016-06-21 16:26:30 0 举报
调度系统设计是一种关键的软件工程任务,它涉及到如何有效地管理和分配资源以满足特定的需求和目标。这种设计需要考虑到各种因素,包括系统的复杂性、性能要求、可靠性和可扩展性等。在设计过程中,工程师们需要使用各种技术和工具,如算法、数据结构、编程语言和数据库管理系统等。此外,他们还需要进行详细的规划和测试,以确保系统能够在实际环境中正常运行。总的来说,调度系统设计是一项既具有挑战性又需要高度专业知识的任务,但它对于提高组织的效率和生产力具有重要意义。
作者其他创作
大纲/内容
更新db状态为未入待出票队列,并更新进带出票队列开始时间
判断是否有备
1)一分钟内未收到订单的,触发一级告警。
没有
推迟出票
返回推迟5分钟
无票
JOB扫描DB,拉出所有被出票系统拉走30分钟未上报结果的订单
3
判断优先是否可用
延迟出票
拉单
1个
收单服务
判断后续的供应商有几个可用的
超过
A(30%)
供应商N
记录日志
拉出所有状态为已出票的订单
捞出所有未入待出票队列的订单,并已过入待入出票队列时间的订单
主备模型
上报服务
两个及以上
无
符合
起JOB消费该供应商队列
fork出多子进程并发处理
退票
4
否
推迟30小时出票
JOB扫描DB,拉出所有已过发车时间的订单
B(在A挤压两倍以上后启用)(可配置)
返回一个供应商
1)数据库已挂
返回seccess
有票接口
判断备是否可用
进该供应商优先队列
0
Redis
进该供应商普通队列
可用
接受订单
8
调度Service
灵活调度模型
DB判断是否存在
失败
返回接口判断
是
更新DB为已完成
成功
服务开关
订单库
B(70%)
返回订单重复推送
超过了
判断是否有保险
请求超时
7
2)订单状态已发生变化
返回供应商
判断
每分钟定时JOB
Service
有
更新db状态
返回服务供应商
系统身份修改DB无票
退票上报
返回未知
推迟
出票上报
延迟
订单调度服务Service,返回可用的供应商
一个订单
判断出发时间半小时内的
WEB服务
调用订单中心有票接口
5
退款成功
判断是否在出票中
可配置
人工处理
写入DB
更新进带出票队列时间为当前时间
订单调度Service--上报无票接口
记LOG
3)最近100单,计算出票成功率,低于80%,触发告警。
调度服务
调度中心
更新DB为无票
JOB
调度Service--其它接口
脚本并发
判断操作
订单不存在
上报JOB--过期订单处理
判断主服务是否可用
抛弃
日志按规则触发监控报警
判断该订单是否有保险
带状态更新DB,标示出票中
不可用
时间可配置
更新该供应商状态为不可用
随机一个供应商
调用订单中心无票接口
2)订单已被另一个供应商拉走
无订单返回
判断挤压量是否超过配置
根据现存活的供应商的权重计算路由
1
有票
判断备用有几个可用的
权重负载模型
拉取订单接口
订单队列管理
供应商
返回订单
1)关于订单的位置变更、状态变更、依赖次数报警或异常单标示的位置都需要记录日志。
是否超过设定的最小时间,比如10分钟
结束
返回优先供应商
获取该车站的出票模型
未
该供应商的优先队列是否有数据
返回无票
0个
黑名单
判断订单是否有保险
调用订单处理日志表获取拉走的出票系统
上报JOB--出票结果上报
6
A
处理中
日志记录
不符合
拉退单
更新db无票
退单结果
订单中心
2)队列连续5次写入失败,触发告警
获取该订单车站
判断订单是否超过配置的服务不可用时的等待时间
服务不可用
推送服务
订单抛弃
多个
获取目前可用的服务商列表及其权重
是否过了发车时间
出票
判断该订单离发车时间是否还有5分钟
调度Service--服务不可用接口
判断普通队列是否有数据
判断订单状态是否为待出票
返回服务不可用
收单Service
2
调度Service--供应商拉单接口
调度JOB--进待出票队列
调用该出票系统的超时询问接口
配置管理,开关控制,监控告警
退款失败
抛弃订单
在一定时间内触发一定次数,而未收到该供应商不可用的反馈,就出发报警
上报JOB--超时订单询问
判断该订单是否符合拉走条件
无票接口
1)订单已取消
判断写入是否成功
0 条评论
下一页