分布式系統的那些事兒(三) - 系統與系統之間的調用


系統與系統之間的調用通俗來講,分為本地同一台服務器上的服務相互調用與遠程服務調用,這個都可以稱之為RPC通信。淺白點講,客戶訪問服務器A,此時服務器要完成某個動作必須訪問服務器B,服務器A與B互相通信,相互調用,A訪問B的時候,A掛起,等待B的響應,B響應返回相應的數據個A,A再返回給用戶,這就是一個很簡單的栗子。

舉個常見栗子,用戶上傳圖片,用戶上傳圖片首先會經過自身的服務器,然后再對圖片進行處理,此時圖片處理放在圖片服務器中進行,那么我們只需要調用圖片服務器提供的接口即可,然后等待響應返回的圖片地址,此時我們隊它進行額外的處理,保存到數據庫然后在返回到前端進行顯示。

再不明白就說說這次的順豐和菜鳥數據安全事件,就是你調用我我調用你這樣的一些列RPC通信。

其實在多年以前,系統之間的通信通過建立tcp協議來進行交互,非常麻煩,而現如今使用RPC的話那么就簡單的多了,很多細節方面的事我們無需關注,比如socket啊,數據的轉換啦解析啦等等。

RPC通信在系統之間的主要數據格式會以json為主,當然也有xml的形式,但是不多,不過很多老系統還是都會以xml為主。

在傳輸過程中,系統和系統之間的通信通過網絡,而通信並不會保證每次都會成功,所以各類錯誤也一定要完善,就像咱們有時候對接第三方接口那樣,會提供很多的錯誤碼供我們分析,甚至還有超時請求的響應時間配置等等。對於這一系列的異常以及錯誤,我們一定要捕獲並且處理,不然在頂端的客戶不知道系統發生了什么而一直等着,這樣是不人性化的。

系統之間通信收到網絡的影響很多時候響應會比較慢,此時的用戶可能會在客戶端多次點擊按鈕,這樣被調用的服務端就會執行多次,那么就要考慮系統的冪等性,這個不多說了,以前的帖子里有講過。

​(未完待續)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM