外部系统交互设计原则探讨

一 规避系统间依赖

任何外部系统都是不可靠的
假设你要做的是A系统,某个数据需要到B系统去查。考虑到:

  1. 自己系统是有qps指标要求的
  2. 其它系统都是不可靠的

那么,是不是必须一定要到B系统呢?能不能做一份数据冗余呢?将B系统中数据同步到自己系统,这样,不管B系统怎么样,自己系统都不会有问题了。

二 尽量是作为依赖提供方

作为上游,而不是下游。宁可影响到别人,而不要被别人所影响
如果实在无法避免系统间依赖,那也尽量是做为上游的服务提供方,而非做下游的服务调用方。上游接口错了,会污染到下游,宁可做污染的人,也不要被别人所污染。

三 能不做的尽量不做

  1. 非自己业务范畴一概不做。
  2. 老数据,老产品能不做尽量不做。

四 时刻为外部异常做好准备

多系统间系统调用是无法保证数据一致性的。无论是外系统调用你还是你调用外系统,如果外系统调用你,如果你失败了,那么他的数据无法保证一致;同理,如果是你调用外系统,那么他的系统失败了,你的数据就有问题了。

  1. 如果是外部系统调用
    在数据入口处就做好记录,做一个状态机,当你执行成功后将状态更改为成功。同时,外部系统也应该做一个数据反查或者数据推送接口,查询数据是否成功,或者由我们这边推送状态。
  2. 如果是调用外部接口
    如果是本系统调用外部接口,特别是外部系统变更,比如涉及到插入或者修改(查询不算),那么是不是需要要求外部系统成功后做一个推送?或者自己这边做一个查询,来轮询接口的调用情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值