下游系统访问思考
2017-07-28 17:10
113 查看
转自:http://blog.csdn.net/fatshaw/article/details/51849423
一般系统都会访问外部系统,比如请求支付,会员卡,营销等各种系统,有时候一次请求需要访问多个下游系统,这种情况下失败是避免不了的。这里总结了几个注意事项
访问下游系统必须设置超时时间,一般设置3s,不同业务系统需要进行相应调整
访问下游系统qps必须控制,不能给下游系统压力过大
幂等操作:访问下游失败了,可能是由于网络超时,下游系统已经处理成功。这个时候有两种方式
下游提供查询接口,通过查询判断是否处理成功
下游提供幂等接口,通过幂等号多次请求下游,下游保证操作幂等
一次请求需要访问多个下游,如果保证多个下游的数据一致性
通过分布式事务,比较重,而且需要各个下游支持分布式事务接口,比较难实现。
通过二阶段事务方式访问各个下游,要求也是下游系统需要支持二阶段事务协议,也比较难实现。
简单依次访问各个下游,如果某个下游访问失败了,可以进行的操作是:
简单重试n次,一般是3次。优点是简单,缺点是如果n次不成功,之前访问的系统无法回滚。
如果n次不成功,有效的方案是落异步任务,然后通过任务无限次重试。优点是可以保证最终一致性。缺点是开发成本大,而且需要下游系统支持幂等。如果下游系统不支持幂等怎么办?我们可以自己为下游系统记录幂等信息,比如我们自己记录一个流水表,记录各个下游系统是否访问成功了。如果成功了就不再访问了
如果落异步任务成本太高,怎么办?暂时没想到什么好方法,我能想到的就是客户端不断重试调用服务端。
^_^
一般系统都会访问外部系统,比如请求支付,会员卡,营销等各种系统,有时候一次请求需要访问多个下游系统,这种情况下失败是避免不了的。这里总结了几个注意事项
访问下游系统必须设置超时时间,一般设置3s,不同业务系统需要进行相应调整
访问下游系统qps必须控制,不能给下游系统压力过大
幂等操作:访问下游失败了,可能是由于网络超时,下游系统已经处理成功。这个时候有两种方式
下游提供查询接口,通过查询判断是否处理成功
下游提供幂等接口,通过幂等号多次请求下游,下游保证操作幂等
一次请求需要访问多个下游,如果保证多个下游的数据一致性
通过分布式事务,比较重,而且需要各个下游支持分布式事务接口,比较难实现。
通过二阶段事务方式访问各个下游,要求也是下游系统需要支持二阶段事务协议,也比较难实现。
简单依次访问各个下游,如果某个下游访问失败了,可以进行的操作是:
简单重试n次,一般是3次。优点是简单,缺点是如果n次不成功,之前访问的系统无法回滚。
如果n次不成功,有效的方案是落异步任务,然后通过任务无限次重试。优点是可以保证最终一致性。缺点是开发成本大,而且需要下游系统支持幂等。如果下游系统不支持幂等怎么办?我们可以自己为下游系统记录幂等信息,比如我们自己记录一个流水表,记录各个下游系统是否访问成功了。如果成功了就不再访问了
如果落异步任务成本太高,怎么办?暂时没想到什么好方法,我能想到的就是客户端不断重试调用服务端。
^_^
相关文章推荐
- 下游系统访问思考
- 无法访问系统带来的一个思考
- 关于企业内部系统访问地址的一些思考
- 【如果Win xp系统网络访问速度慢那么该怎么办】
- windows系统访问linux系统samba服务案例
- Win7 64位系统 Matlab 访问 Mysql 数据库(详细!)
- Linux系统Apache用户授权和访问控制
- 在OS X系统中php访问sftp时需要ssh2扩展的安装
- 使用 /sys 文件系统访问 Linux 内核
- 使用 /proc 文件系统来访问 Linux 内核的内容
- 在Ubuntu上为Android系统的Application Frameworks层增加硬件访问服务
- Ubuntu系统下nginx和ftp搭建图片服务器,处理外网访问不到文件问题
- 系统安装LOL等游戏后出现VS调试报错"无法调试""拒绝访问"之类的调试错误
- 使用 /proc 文件系统来访问 Linux 内核的内容
- [疯狂Java]NIO.2:平台无关的文件系统访问支持(Path、Paths、Files)
- Android开发_如何调用系统默认浏览器访问
- 在Ubuntu上为Android系统的Application Frameworks层增加硬件访问服务
- 小端系统地址访问
- 系统思考
- 网站访问统计系统Piwik安装使用:支持插件扩展统计媲美Google Analytics