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

一 规避系统间依赖

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

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

那么,是否是必须必定要到B系统呢?能不能作一份数据冗余呢?将B系统中数据同步到本身系统,这样,无论B系统怎么样,本身系统都不会有问题了。接口

二 尽可能是做为依赖提供方

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

三 能不作的尽可能不作

  1. 非本身业务范畴一律不作。
  2. 老数据,老产品能不作尽可能不作。

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

多系统间系统调用是没法保证数据一致性的。不管是外系统调用你仍是你调用外系统,若是外系统调用你,若是你失败了,那么他的数据没法保证一致;同理,若是是你调用外系统,那么他的系统失败了,你的数据就有问题了。产品

  1. 若是是外部系统调用
    在数据入口处就作好记录,作一个状态机,当你执行成功后将状态更改成成功。同时,外部系统也应该作一个数据反查或者数据推送接口,查询数据是否成功,或者由咱们这边推送状态。
  2. 若是是调用外部接口若是是本系统调用外部接口,特别是外部系统变动,好比涉及到插入或者修改(查询不算),那么是否是须要要求外部系统成功后作一个推送?或者本身这边作一个查询,来轮询接口的调用状况。
相关文章
相关标签/搜索