博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
下游系统访问思考
阅读量:4347 次
发布时间:2019-06-07

本文共 721 字,大约阅读时间需要 2 分钟。

转自:http://blog.csdn.net/fatshaw/article/details/51849423
 
一般系统都会访问外部系统,比如请求支付,会员卡,营销等各种系统,有时候一次请求需要访问多个下游系统,这种情况下失败是避免不了的。这里总结了几个注意事项
  1. 访问下游系统必须设置超时时间,一般设置3s,不同业务系统需要进行相应调整
  2. 访问下游系统qps必须控制,不能给下游系统压力过大
  3. 幂等操作:访问下游失败了,可能是由于网络超时,下游系统已经处理成功。这个时候有两种方式
    1. 下游提供查询接口,通过查询判断是否处理成功
    2. 下游提供幂等接口,通过幂等号多次请求下游,下游保证操作幂等
  4. 一次请求需要访问多个下游,如果保证多个下游的数据一致性
  • 通过分布式事务,比较重,而且需要各个下游支持分布式事务接口,比较难实现。
  • 通过二阶段事务方式访问各个下游,要求也是下游系统需要支持二阶段事务协议,也比较难实现。
  • 简单依次访问各个下游,如果某个下游访问失败了,可以进行的操作是:
    • 简单重试n次,一般是3次。优点是简单,缺点是如果n次不成功,之前访问的系统无法回滚。
    • 如果n次不成功,有效的方案是落异步任务,然后通过任务无限次重试。优点是可以保证最终一致性。缺点是开发成本大,而且需要下游系统支持幂等。如果下游系统不支持幂等怎么办?我们可以自己为下游系统记录幂等信息,比如我们自己记录一个流水表,记录各个下游系统是否访问成功了。如果成功了就不再访问了
    • 如果落异步任务成本太高,怎么办?暂时没想到什么好方法,我能想到的就是客户端不断重试调用服务端。

^_^

转载于:https://www.cnblogs.com/gotodsp/p/7251365.html

你可能感兴趣的文章
STM32+IAP方案 实现网络升级应用固件
查看>>
用74HC165读8个按键状态
查看>>
jpg转bmp(使用libjpeg)
查看>>
linear-gradient常用实现效果
查看>>
sql语言的一大类 DML 数据的操纵语言
查看>>
VMware黑屏解决方法
查看>>
JAVA 基础 / 第八课:面向对象 / JAVA类的方法与实例方法
查看>>
Thrift源码分析(二)-- 协议和编解码
查看>>
考勤系统之计算工作小时数
查看>>
4.1 分解条件式
查看>>
关于C++ const成员的一些细节
查看>>
《代码大全》学习摘要(五)软件构建中的设计(下)
查看>>
C#检测驱动是否安装的问题
查看>>
web-4. 装饰页面的图像
查看>>
微信测试账户
查看>>
算法练习题
查看>>
学习使用Django一 安装虚拟环境
查看>>
Hibernate视频学习笔记(8)Lazy策略
查看>>
CSS3 结构性伪类选择器(1)
查看>>
IOS 杂笔-14(被人遗忘的owner)
查看>>