1. 程式人生 > >RPC框架簡述

RPC框架簡述


RPC(remote procedure call)遠端過程呼叫。

比如:兩臺伺服器A和B,A伺服器上部署一個應用,B伺服器上部署一個應用,A伺服器上的應用想呼叫B伺服器上的應用提供的介面,由於不在一個記憶體空間,不能直接呼叫,所以需要通過網路來表達呼叫的語義和傳達呼叫的資料。

一、步驟:

  1. 通訊問題:客戶端和服務端建立TCP連線,遠端過程呼叫的所有交換的資料都在這個連線裡傳輸;(連線可以是按需連線,呼叫結束後就斷掉,也可以是長連線,多個遠端過程呼叫共享一個連線)
  2. 定址問題:A伺服器通過底層RPC框架得知,如何連線到B伺服器(主機或IP地址)以及特定的埠,方法的名稱等資訊。
    1. A伺服器上的應用,發起遠端呼叫,方法的引數(序列化過了,因為網路協議是基於二進位制的)通過底層網路協議和TCP傳遞到B伺服器;
    2. B伺服器收到請求後,反序列化,恢復為記憶體中的表達方式,然後找到對應的方法進行本地呼叫並返回(序列化返回值)給A伺服器;
    3. A伺服器收到B伺服器的返回值,反序列化,然後交給A伺服器上的應用進行處理。

二、為什麼使用RPC

就是無法在一個程序內,甚至一個計算機內通過本地呼叫的方式完成的需求,比如比如不同的系統間的通訊,甚至不同的組織間的通訊。由於計算能力需要橫向擴充套件,需要在多臺機器組成的叢集上部署應用。

RPC的協議有很多,比如Java RMI、WebService的RPC風格、Hession、Thrift、REST API