RPC框架的意義和用法,什麼是RPC

關於RPC框架,首先我們要了解什麼叫RPC,爲什麼要用RPC。

RPC是隻遠程過程調用,也就是說兩臺服務器A,B, 一個應用部署在A服務器上,另一個應用部署在B服務器上,A服務器上的應用想要調用B服務器上的應用提供的方法/函數,由於不在一個內存空間,不能直接調用,需要通過網絡來表達調用的語意和傳遞調用的參數。

比如說,一個方法可能這樣定義:

Student getStudentByName(String name)

那麼:

  首先,要解決通訊的問題,主要是通過在客戶端和服務器之間建立TCP連接,遠程調用過程中所有交換的數據都在這個連接裏傳輸,連接可以是按需連接,調用結束後就關閉,也

可以是長連接,多個遠程調用共享一個連接。

  第二,要解決尋址的問題,也就是說,A服務器上的應用怎麼告訴底層的RPC框架,如何連接到B服務器(如主機或IP地址)以及特定的端口號,方法的名稱是什麼,這樣才能完成調用,比如基於WEB服務協議的RPC,就要提供一個endpoint URI,或者是從UDDI服務上查找。如果是RMI調用的話,還需要一個RMI Registry來註冊服務的地址。

  第三,當A服務器上的應用發起遠程過程調用時,方法的參數需要通過底層的網絡協議如TCP傳遞到B服務器,由於網絡協議是基於 二進制的,內存中的參數的值要序列化成二進制的形式,也就是序列化(Serialize)或編組(marshal),通過尋址和傳輸將序列化的二進制發送給B服務器。

  第四,B服務器收到請求後,需要對參數進行反序列化(序列化的逆操作),恢復爲內存中的表達方式,然後找到對應的方法(尋址的一部分)進行本地調用,然後得到返回值。

  第五,返回值還要發送給A服務器上的應用,也要經過序列化的方式發送,服務器A接到後,在反序列化,恢復爲內存中的表達方式,交給A服務器上的應用。

 

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