外部系統交互設計原則探討

一 規避系統間依賴

任何外部系統都是不可靠的
假設你要作的是A系統,某個數據須要到B系統去查。考慮到:code

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

那麼,是否是必須必定要到B系統呢?能不能作一份數據冗餘呢?將B系統中數據同步到本身系統,這樣,無論B系統怎麼樣,本身系統都不會有問題了。接口

二 儘可能是做爲依賴提供方

做爲上游,而不是下游。寧肯影響到別人,而不要被別人所影響
若是實在沒法避免系統間依賴,那也儘可能是作爲上游的服務提供方,而非作下游的服務調用方。上游接口錯了,會污染到下游,寧肯作污染的人,也不要被別人所污染。同步

三 能不作的儘可能不作

  1. 非本身業務範疇一律不作。
  2. 老數據,老產品能不作儘可能不作。

四 時刻爲外部異常作好準備

多系統間系統調用是沒法保證數據一致性的。不管是外系統調用你仍是你調用外系統,若是外系統調用你,若是你失敗了,那麼他的數據沒法保證一致;同理,若是是你調用外系統,那麼他的系統失敗了,你的數據就有問題了。產品

  1. 若是是外部系統調用
    在數據入口處就作好記錄,作一個狀態機,當你執行成功後將狀態更改成成功。同時,外部系統也應該作一個數據反查或者數據推送接口,查詢數據是否成功,或者由咱們這邊推送狀態。
  2. 若是是調用外部接口若是是本系統調用外部接口,特別是外部系統變動,好比涉及到插入或者修改(查詢不算),那麼是否是須要要求外部系統成功後作一個推送?或者本身這邊作一個查詢,來輪詢接口的調用狀況。
相關文章
相關標籤/搜索