外部系统交互设计原则探讨
一 规避系统间依赖
任何外部系统都是不可靠的
假设你要做的是A系统,某个数据需要到B系统去查。考虑到:
- 自己系统是有qps指标要求的
- 其它系统都是不可靠的
那么,是不是必须一定
要到B系统呢?能不能做一份数据冗余呢?将B系统中数据同步到自己系统,这样,不管B系统怎么样,自己系统都不会有问题了。
二 尽量是作为依赖提供方
作为上游,而不是下游。宁可影响到别人,而不要被别人所影响
如果实在无法避免系统间依赖,那也尽量是做为上游的服务提供方,而非做下游的服务调用方。上游接口错了,会污染到下游,宁可做污染的人,也不要被别人所污染。
三 能不做的尽量不做
- 非自己业务范畴一概不做。
- 老数据,老产品能不做尽量不做。
四 时刻为外部异常做好准备
多系统间系统调用是无法保证数据一致性的。无论是外系统调用你还是你调用外系统,如果外系统调用你,如果你失败了,那么他的数据无法保证一致;同理,如果是你调用外系统,那么他的系统失败了,你的数据就有问题了。
- 如果是外部系统调用
在数据入口处就做好记录,做一个状态机,当你执行成功后将状态更改为成功。同时,外部系统也应该做一个数据反查或者数据推送接口,查询数据是否成功,或者由我们这边推送状态。 - 如果是调用外部接口
如果是本系统调用外部接口,特别是外部系统变更,比如涉及到插入或者修改(查询不算),那么是不是需要要求外部系统成功后做一个推送?或者自己这边做一个查询,来轮询接口的调用情况。
相关推荐
hellofeiya 2020-11-12
那些年写过的代码 2020-06-28
钟鼎 2020-06-26
钟鼎 2020-06-14
slacksmile 2020-06-09
嵌入式移动开发 2020-06-07
VanTYS 2020-05-30
rise 2020-04-26
chvnetcom 2020-04-26
随心而作 2020-04-19
嵌入式移动开发 2020-04-06
Freeman00 2020-03-26
saminigod 2020-03-05
VanTYS 2020-02-23
JavaWDB 2020-02-10
随心而作 2020-01-28
acloudhuang 2020-01-18
VanTYS 2020-01-04