1. 程式人生 > >1.深入架構Restful對比RPC(二)之RPC

1.深入架構Restful對比RPC(二)之RPC

1.分散式應用,雲端計算以及微服務流行,其根本本質是RPC,以下就是對與RPC技術的一個總結。

2.RPC的定義:

全稱是Remote  procedure Call是一種程序間的通訊方式,允許程式呼叫另一個地址空間的過程或函式,而不用程式設計師編碼整個遠端呼叫的細節,表現就是,無論程式設計師是呼叫本地的還是遠端的函式,本質上編寫的呼叫程式碼基本相同。

3.RPC特性:

 《1》概念定義:簡單,便於建立分散式

  《2》高效:過程呼叫起來十分簡單而且高效

  《3》單機計算機中,往往是不同演算法部分間的最重要通訊機制

4.目的:程式設計師對於本地的過程呼叫十分熟悉,那麼我們就把RPC做成和本地呼叫完全類似,使用起來如同呼叫本地的,目前的RPC就是基於整個目標進行實現的。

5.RPC的應用:主要目標是構建分散式計算更加容易,在提供強大的遠端呼叫能力時不損失本地呼叫的語義簡潔性,為實現這個目標,RPC框架需要提供一個透明機制讓使用者不必顯式的區分本地呼叫和遠端呼叫。

1.RPC的呼叫分為以下兩種:

1》同步呼叫:客戶端等待呼叫執行完成並獲取到執行結果。

2》非同步呼叫:客戶端呼叫後不用等待執行結果,但是依然可以通過回撥通知等方式獲取返回結果,如果客戶端不關心呼叫結果,則變成單向非同步呼叫,單向呼叫不用返回結果。

在非同步和同步的區分在於是否等待服務端執行完成並返回結果。

這裡的user也就是client端,當用戶端想發起一個遠端呼叫的時候,他實際是通過本地呼叫的USer-stub,

其中User-stub作用是負責將呼叫的介面,方法和引數通過約定的協議規範進行編碼並通過本地的PRCRuntime例項傳輸到遠端的例項,遠端RPCRunTime例項收到請求之後交給Server-stub進行解嗎之後發起向本地端server的呼叫,呼叫結果再返回給,呼叫結果再返回給USer端。

進一步的去加深理解RPC,如下圖所示:

元件解釋如下:

1.RPCServer

負責匯出(export)遠端介面(服務端)

2.RPCclient

負責匯入(import)遠端介面的代理實現

3.RPCproxy

遠端介面的代理實現(用於進行排程)

4.RPCInvoker

客戶端:負責編碼呼叫資訊和傳送呼叫請求到服務端並等待呼叫結果返回。

服務端:負責呼叫服務端介面的具體實現並返回呼叫結果。

5.RPCProtocol

負責協議編碼/解碼

6.RPCConnector

負責維護客戶端和服務端的連線通道和傳送資料到服務端。

7.RPCAcceptor

負責接收客戶端請求並返回請求結果

8.PRCProcessor

負責在服務端控制呼叫過程,包括管理呼叫執行緒池,超時時間等。

9.RPCChannel

資料傳輸通道

具體的元件流程如下:

https://www.cnblogs.com/mindwind/p/5518145.html