国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

通過實際業務場景理解后端接口的冪等性

趙春朋 / 1292人閱讀

摘要:有些接口可以天然的實現冪等性,比如查詢接口,對于查詢來說,你查詢一次和兩次,對于系統來說,沒有任何影響但對于有寫庫操作的增刪改接口,多次調用就會對系統有多次影響。

寫在前面:之前在設計接口時因經驗尚淺,并未過多考慮冪等性,但這兩天出現的一個線上問題讓我認識到了某些情況下接口冪等性的重要性;

非冪等場景:
服務A單據A信息通過RPC遠程過程調用傳給下游服務B接口(非冪等接口)用于生成關聯單據B,服務B接口會校驗是否已經接收過單據A,如果已接收過,會報錯『重復的單據』,如果未接收過,則生產關聯單據B并寫庫,將結果返回服務A,服務A收到結果后修改此單據狀態,將結果返回客戶端。簡化流程圖如下所示:

非冪等出現的問題:
服務A調用服務B后,服務B生成關聯單據B寫庫成功,返回成功給服務A;但由于網絡抖動,服務A未接收到服務B返回的響應,默認認定失敗,返回客戶端失敗;業務人員重試,但由于服務B已接受過此單據A,會拋出異常『重復單據A』,對于此單據A就永遠無法接受到單據B的成功響應,永遠為『處理失敗』狀態,與實際狀態不一致;(出現此問題后,首先確認單據A的關聯單據B已生成,然后手動修復服務A里單據A的狀態為『處理成功』)

冪等性解決:
為了解決以上問題,就需要保證下游服務B接口單據A維度冪等性;判斷再次接受到單據A之后,不做任何操作,直接返回成功即可,服務A接受到成功后即可修改單據A狀態為『處理成功』;

接口的冪等性實際上就是接口可重復調用,在調用方多次調用的情況下,接口最終得到的結果是一致的。有些接口可以天然的實現冪等性,比如查詢接口,對于查詢來說,你查詢一次和兩次,對于系統來說,沒有任何影響;但對于有寫庫操作的增刪改接口,多次調用就會對系統有多次影響。

實現冪等性的關鍵在于識別重復的請求,對重復的請求返回成功即可,無需再對系統造成影響;

實現冪等性后的簡化流程圖:

寫在最后:冪等性應用的場景還有很多,實現也有很多方式,更有很多需要考慮的問題,隨著工作學習的深入,理解也一定會越來越深入的,加油!

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/28491.html

相關文章

  • 分布式冪等問題解決方案三部曲

    摘要:解決冪等問題的三部曲,也是作者的思考框架。這是解決冪等問題的第二部曲列出并減少副作用的分析維度。所以在并發執行的維度,將并發重復執行變成串行重復執行是最好的冪等解決方案。 綱要 文章目的:本文旨在提煉一套分布式冪等問題的思考框架,而非解決某個具體的分布式冪等問題。在這個框架體系內,會有一些方案舉例說明。文章目標:希望讀者能通過這套思考框架設計出符合自己業務的完備的冪等解決方案。文章內容...

    mumumu 評論0 收藏0
  • js函數式編程術語總結

    摘要:而純函數,主要強調相同的輸入,多次調用,輸出也相同且無副作用。對于組合可能不返回值的函數很有用在其它的一些地方,也稱為,也稱為,也稱為 參考文檔1 參考文檔2 函數式編程術語 高階函數 Higher-Order Functions 以函數為參數的函數 返回一個函數的函數 函數的元 Arity 比如,一個帶有兩個參數的函數被稱為二元函數 惰性求值 Lazy evaluation 是...

    番茄西紅柿 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<