方案
2023-11-20 10:12:49 5 举报
单元化分布式架构方案
作者其他创作
大纲/内容
获取当前交易时间和该交易的超时时间并设置到当前域上下文中
原子服务处理
响应方向
最大超时时间已消耗时间
否
同步消息交互
最大超时时间:7s已消耗时间:3s
微服务框架
是否超时
释放分布式锁
调用应用服务B
成功
外呼超时时间为:剩余超时时间-连接时间
业务处理
超时时间为:剩余超时时间 + T1
轮询上报结果
13 0
是
报文头
重置开始时间为当前时间
已消耗时间:7s剩余:3s
一:获取最大超时时间并设置到报文中1、先从报文头获取最大超时时间2、如果未获取到,从交易服务的配置中获取3、如果都未获取到,获取全局的配置,默认5s二:计算剩余超时时间并判断是否超时1、先从报文头中获取已消耗时间2、剩余超时时间 = 最大超时时间 - 已消耗时间3、如果未超时,将已消耗时间设置到报文中,否则抛出异常三:将当前时间和剩余超时时间设置到上下文中
将当前交易时间和剩余超时时间设置到当前域上下文中
耗时3s
开始
是否执行成功
最大超时时间:10s已消耗时间:0s
处理失败
服务调用
组合
核心系统网关
提供方响应方向
MQ
交易服务
请求方向
结束
获取分布式锁
。。。
结束返回
当前时间:18:38
最大超时时间:13当前时间:18:36use:0
清理上下文超时的设置
分布式锁
已消耗时间:11s剩余:-1s(超时)
调用应用服务N
超时时间:Ta=T1-cost1-连接时间(cost1=当前时间-S1)
13
开启线程扫描待处理任务并发送到MQ
原子服务结束后是否回去?是否计算耗时?使用最大超时时间的交易多少?
应用服务计算超时
核心外呼网关
核心批量应用
定时任务
应用服务A
当前时间:18:37
外呼其它系统
分布式定时器
请求方请求方向
综合前置
按流程编排进行调用
运维管控界面
设置应用服务超时时间
剩余超时时间=交易服务超时时间 - (当前时间 - 交易服务开始时间)
是否配置该交易超时时间
支持全局的和交易级的配置,用来判断分布式核心系统网关自身是否超时
一、获取报文中最大超时时间和已消耗时间,如果未获取到,则从配置中获取,并设置到报文头中,超时配置如下:1、交易级的超时配置(支持配置文件和注解)2、全局的超时配置,默认5秒二、优先级:配置文件 > 注解 > 全局的三、RPC调用时,计算最大超时间,作为参数传入到RPC调用中,如果超过此时间未收到响应信息,则抛出异常
直连系统
执行分布式核心系统网关逻辑
调度服务
1、RPC调用交易服务时,接收网关配置的超时时间。2、如果超过此时间未接收到响应信息,则抛出异常。3、如果未配置,则使用微服务框架默认的配置
RPC调用
超时异常
设置超时时间到RpcContext中
传入该交易的调用超时时间
超时配置有以下两种:一、核心系统网关自身超时控制:1、全局的超时配置,默认5秒2、交易级的超时配置,优先级比上面的高二、核心系统网关外调交易服务的超时控制
锁超时时间为:剩余超时时间 +交易服务的超时时间
获取当前交易时间(S1)和该交易的超时时间(T1)并设置到当前域上下文中
调度库
清理RpcContext中的超时时间
获取当前交易时间并设置到当前域上下文中
每隔一定时间检查交易服务是否超时,默认每隔3s检查,可配置
调用超时
增加
登记入库
应用服务
消费作业消息
批量业务库
1、每个任务会包含多个作业,任务中的每项作业处理失败,都会更正任务为失败状态2、仅支持任务维度的超时控制,任务超时会触发超时策略3、超时策略可配置为告警/告警并中断
获取最大超时时间和剩余超时时间
调用应用服务A
调用应用服务---
监听
调用应用服务1
最大超时时间:10s已消耗时间:2s
最大超时时间:13当前时间:18:35
已消耗时间:3s剩余:7s
微服务框架调用
交易级配置,用来判断调用交易服务时是否超时
最大超时时间:8-1=7s已消耗时间:---
将当前交易时间和(Ta)设置到当前域上下文中
是否超过全局默认时间
未明异常
消费上报结果
1、从交易服务中获取剩余的超时时间2、如果没有获取到,则从配置文件获取,超时配置支持交易级的和全局的,优先级:交易级 > 全局3、RPC调用时,计算最大超时间,作为参数传入到RPC调用中,如果超过此时间未收到响应信息,则抛出异常4、全局的配置,应用服务默认1秒,核心外呼网关默认5秒
最大超时时间:10-2=8s已消耗时间:---
服务调用编排
耗时1s
异步消息交互
已消耗时间 = 当前时间 - 开始时间已消耗时间:1s剩余:9s
耗时2s
最大超时时间:8s已消耗时间:1s
0 条评论
回复 删除
下一页