天天看點

RPC的原理總結

早期單機時代,一台電腦上運作多個程序,大家各幹各的,老死不相往來。假如A程序需要一個畫圖的功能,B程序也需要一個畫圖的功能,程式員就必須為兩個程序都寫一個畫圖的功能。這不是整人麼?于是就出現了IPC(Inter-process communication,單機中運作的程序之間的互相通信)。OK,現在A既然有了畫圖的功能,B就調用A程序上的畫圖功能好了,程式員終于可以偷下懶了。

到了網絡時代,大家的電腦都連起來了。以前程式隻能調用自己電腦上的程序,能不能調用其他機器上的程序呢?于是就程式員就把IPC擴充到網絡上,這就是RPC(遠端過程調用)了。現在不僅單機上的程序可以互相通信,多機器中的程序也可以互相通信了。

要知道實作RPC很麻煩呀,什麼多線程、什麼Socket、什麼I/O,都是讓咱們普通程式員很頭疼的事情。于是就有牛人開發出RPC架構(比如,CORBA、RMI、Web Services、RESTful Web Services等等)。

通過以上内容,現在可以定義RPC架構的概念了。簡單點講,RPC架構就是可以讓程式員來調用遠端程序上的代碼一套工具。有了RPC架構,咱程式員就輕松很多了,終于可以逃離多線程、Socket、I/O的苦海了。

RPC(Remote Procedure Call Protocol)——遠端過程調用協定,它是一種通過網絡從遠端計算機程式上請求服務,而不需要了解底層網絡技術的協定。RPC協定假定某些傳輸協定的存在,如TCP或UDP,為通信程式之間攜帶資訊資料。在OSI網絡通信模型中,RPC跨越了傳輸層和應用層。RPC使得開發包括網絡分布式多程式在内的應用程式更加容易。

RPC采用客戶機/伺服器模式。請求程式就是一個客戶機,而服務提供程式就是一個伺服器。首先,客戶機調用程序發送一個有程序參數的調用資訊到服務程序,然後等待應答資訊。在伺服器端,程序保持睡眠狀态直到調用資訊到達為止。當一個調用資訊到達,伺服器獲得程序參數,計算結果,發送答複資訊,然後等待下一個調用資訊,最後,用戶端調用程序接收答複資訊,獲得程序結果,然後調用執行繼續進行。

三.RPC原理圖和對應的步驟:

RPC的原理總結

運作時,一次客戶機對伺服器的RPC調用,其内部操作大緻有如下十步:

1.調用用戶端句柄;執行傳送參數

2.調用本地系統核心發送網絡消息

3.消息傳送到遠端主機

4.伺服器句柄得到消息并取得參數

5.執行遠端過程

6.執行的過程将結果傳回伺服器句柄

7.伺服器句柄傳回結果,調用遠端系統核心

8.消息傳回本地主機

9.客戶句柄由核心接收消息

10.客戶接收句柄傳回的資料

 暫時不貼了。。。。。。。回頭有時間再弄。。。

本文轉自SummerChill部落格園部落格,原文連結:http://www.cnblogs.com/DreamDrive/p/7505891.html,如需轉載請自行聯系原作者

繼續閱讀