1. 程式人生 > 其它 >分散式服務架構簡介(RPC原理)

分散式服務架構簡介(RPC原理)

RPC簡介

分散式應用架構(遠端過程呼叫):當垂直應用越來越多,應用之間互動不可避免,將核心業務抽取出來,作為獨立的服務,逐漸形成穩定的服務中心,使前端應用能更快速的響應多變的市場需求。

什麼叫RPC

RPC [ Remote Procedure Call]是指遠端過程呼叫,是一種程序問通訊方式,他是一種技術的思想,而不是規範。需要通過網路來表達呼叫的語義和傳達呼叫的資料,它允許程式呼叫另一個地址空間(通常是共享網路的另一臺機器上)的過程或函式,而不用程式設計師顯式編碼這個遠端呼叫的細節。即程式設計師無論是呼叫本地的還是遠端的函式,本質上編寫的呼叫程式碼基本相同。


RPC工作原理


Client像呼叫本地服務似的呼叫遠端服務;

Client stub(客戶端助手)接收到需要呼叫遠端方法後,將方法、引數序列化
客戶端通過sockets將訊息傳送到服務端
Server stub(服務端助手) 收到訊息後進行解碼(將訊息物件反序列化)
Server stub 根據解碼結果呼叫服務端的服務
本地服務執行(對於服務端來說是本地執行)並將結果返回給Server stub
Server stub將返回結果打包成訊息(將結果訊息物件序列化)
服務端通過sockets將訊息傳送到客戶端
Client stub接收到結果訊息,並進行解碼(將結果訊息發序列化)
客戶端得到最終結果。

RPC 呼叫分以下兩種:
同步呼叫:客戶方等待呼叫執行完成並返回結果。
非同步呼叫:客戶方呼叫後不用等待執行結果返回

,但依然可以通過回撥通知等方式獲取返回結果。若客戶方不關心呼叫返回結果,則變成單向非同步呼叫,單向呼叫不用返回結果。