Hadoop技術內幕-遠程過程調用基礎知識

遠程過程調用(Remote Procedure Call,RPC)。

一、RPC原理

簡單的說,RPC主是允許程序調用位於其他機器上的過程(也可以是一臺機器的不同進程)。當機器A上的進程調用機器B上的進程時,A上的調用進程被掛起,而B上的被調用進程開始執行。調用方使用參數將信息傳送給被調用方,然後通過傳回的結果得到信息。在這個過程中,A是RPC客戶,B是RPC服務器。同時,編程人員看不到任何消息的傳遞,其行爲如果一個過程到別一個過程 的調用一樣。

常規過程調用,如下圖所示。

int main(...){
...
func(a1, a2, ..., an); 
...
}
int func(p1, p2, ... , pn){
...
}

RPC跨越不同進行,其調用過程如下圖所示。

二、RPC機制的實現

RPC引入客戶存根(Client Stub)和服務器骨架(Server Skeleton)。其實現過程一般如下圖所示。

述RPC實現的精彩之處在於:客戶方可以簡單地忽略不需要關心的內容,客戶只要調用一個普通的、本地的過程,就可以訪問遠程服務,不需要調用send或receive這些底層操作,所有的消息傳遞細節都隱藏在RPC的庫過程中,就如同傳統庫中隱藏了執行實際系統調用的細節一樣。

如果調用接口確定,上述過程的很多組件都 可以自動生成,RPC通過接口定義語言(Interface Definition Language, IDL)描述調用接口的詳細信息。IDL文件可以包含類型定義、常量聲明、進行參數傳遞時需要的一些其他信息和註釋。

IDL文件編寫客戶端和服務器代碼、編譯、連接,就可以得到客戶程序和服務器程序。完成一個包含RPC的應用程序的開發。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章