04.14 當下最流行的高性能開發框架——RPC框架

當下最流行的高性能開發框架——RPC框架

RPC概述

指遠程過程調用協議,它是一種通過網絡從遠程計算機程序上請求服務。RPC採用客戶機/服務器模式。請求程序就是一個客戶機,而服務提供程序就是一個服務器。首先,客戶機調用進程發送一個有進程參數的調用信息到服務進程,然後等待應答信息。在服務器端,進程保持睡眠狀態直到調用信息的到達為止。當一個調用信息到達,服務器獲得進程參數,計算結果,發送答覆信息,然後等待下一個調用信息。最後,客戶端調用進程接收答覆信息,獲得進程結果,然後調用執行繼續進行。hadoop、hbase等分佈式體系結構就是構建在RPC之上的。簡單的rpc調用過程如下圖:

當下最流行的高性能開發框架——RPC框架

當Client調用遠程的方法時,先將要調用的方法名、參數等信息按RPC協議轉換為RPC消息,然後再通過某種傳輸協議(TCP、HTTP等)將RPC消息傳輸到Server端。Server端接到請求後將RPC消息按協議轉換為調用請求,並執行方法,將執行後的結果按類似的過程返回給Client端,完成一次RPC調用。

RPC框架原理

在RPC框架中主要有三個角色:Provider、Consumer和Registry。如下圖所示:

當下最流行的高性能開發框架——RPC框架

節點角色說明:

  • Server: 暴露服務的服務提供方。

  • Client: 調用遠程服務的服務消費方。

  • Registry: 服務註冊與發現的註冊中心。

當下最流行的高性能開發框架——RPC框架

PC與HTTP、RMI等遠程通信方式比較

  • RMI與RPC:

RMI(Remote Method Invocation)是指java語言中的遠程方法調用,RMI中的每個方法都具有方法簽名,RMI客戶端和服務器端通過方法簽名進行遠程方法調用。RMI只能在java語言中使用,可以把RMI看作面向對象的java RPC。

  • HTTP與RPC

HTTP(HyperText Transfer Protocol)是應用層通信協議,使用標準語義訪問指定資源(圖片、接口等),網絡中的中轉服務器能識別協議內容。HTTP協議是一種資源訪問協議,通過HTTP協議也可以完成遠程請求並返回請求結果。HTTP的優點是簡單、易用,可理解性好、並且與語言無關;HTTP協議的缺點是協議頭比較重,一般請求到具體服務器的鏈路較長(可能會有dns解析、nginx代理等)。

相對於HTTP來說,通信層只是RPC協議的一部分,RPC可以使用TCP或者HTTP等作為通信協議。除了通信協議,RPC還包括請求序列化協議,一般RPC框架還會包括一些調度管理能力。RPC相對於HTTP的優點是能夠提供調度、管理能力,使用RPC服務的自動化程度比較高,性能也十分優秀。缺點就是相對複雜,學習成本稍高。


分享到:


相關文章: