1. 程式人生 > >google開源RPC框架gRPC:安裝

google開源RPC框架gRPC:安裝

gRPC是一個有google最先開發的RPC(Remote Procedure Call:遠端過程呼叫)框架,並在15年初開源。是一個比較新的東西,因為工作需要進行了一些研究,這裡做一個記錄。

RPC的一些內容

RPC 的全稱是 Remote Procedure Call 是一種程序間通訊方式。它允許程式呼叫另一個地址空間(通常是共享網路的另一臺機器上)的過程或函式,而不用程式設計師顯式編碼這個遠端呼叫的細節。即程式設計師無論是呼叫本地的還是遠端的,本質上編寫的呼叫程式碼基本相同。

RPC的實現基本包括5個部分:

1. User
2. User-stub
3. RPCRuntime
4. Server-stub

5. Server

stub元件實現向上與User?server的互動以及向下和RPCRuntime的互動:User通過User-stub發出呼叫方法的請求,提供相關引數,請求的目標server,User-stub呼叫RPCRuntime將請求編碼處理,傳送到Server端,有Server-Stub解析請求,將方法名和引數傳遞給Server,Server再講結果又同樣的途徑返回給User。

gRPC介紹

a language-neutral, platform-neutral, open source, remote procedure call (RPC) system initially developed at Google.這是gRPC官網上的一個描述,說明了它的特點:語言無關、平臺無關。

語言無關性:1、gRPC支援java、c++、Python在內的十餘種主要的程式語言的開發,可以自由選擇適合自己的語言;2、gRPC支援不同語言之間的相互呼叫:user端和server端可以使用不同的語言開發,只須協調好訊息的格式。

平臺無關:gRPC支援現主要的平臺:windows、Unix/linux、Mac。 另外還有一個重要的部分:IDL(Interface Definition Language:介面定義語言),使用這種語言來定義客戶端和伺服器端的通訊協議,然後呼叫protobuf(這是google開發的一個用於結構化資料序列化的工具)編譯器,自動生成相關的stub部分的程式碼框架,這可以大大減少使用者的工作量,使用者只需要擴充套件生成的介面,加入自己的業務邏輯即可,而底層的通訊、資料處理的細節則有gRPC來處理。
如下面一段IDL程式碼:
message HelloRequest{string greeting =1;}

message HelloResponse{string reply =1;}

service HelloService{
  rpc SayHello(HelloRequest) returns
  (HelloResponse);}
通過protobuf編譯器,可以生成對應的Java、C++、Python的原始檔,用各種語言定義一個實現業務邏輯的HelloService類,定義訊息格式的HelloRequest、HelloResponse類,HelloService類中定義一個SayHello方法,有一個HelloRequest物件引數,返回一個HelloResponse物件。另外兩個類則提供了訊息資料的各種讀寫和序列化操作,使用者只需要擴充套件HelloService類,新增自己的業務邏輯。 gRPC的架構簡圖:

gRPC的安裝

這裡主要介紹在Linux上的安裝。 因為grpc要依賴於protobuf,所以還需要安裝protobuf。protobuf和gRPC都是開源專案,原始碼託管在github上,我這裡是通過使用編譯原始碼的方式進行安裝。 安裝protobuf: 先使用git命令獲取到protobuf的原始碼,裡面有一個人INSTALL.txt檔案,裡面說明了安裝的流程, 這裡說明幾個地方: 1、首先執行autogen.sh時,會從google code下載protobuf依賴的一個元件gTest,這是一個C++的單元測試包,有時候會因為網路原因失敗,可以手動到google code上下載gtest-1.7的zip包,然後放在同一層目錄下,然後編輯autogen.sh檔案,註釋掉其中的下載gtest的語句 curl -O https://googlemock.googlecode.com/files/gmock-1.7.0.zip 2、安裝可以設定protobuf的安裝路徑,在config的命令中增加選項即可。但自定義了安裝路徑的,需要設定一些環境變數,以保證protobuf提供的元件可以被gRPC使用,這裡要設定一個LIBRARY_PATH,將protobuf安裝目錄下lib目錄的路徑附加在LIBRARY_PATH後,也可以在/etc/ld.so.conf檔案,在後面附加上protobuf安裝目錄下lib目錄的路徑,然後執行一個ldconfig命令,使修改生效。 安裝gRPC: 和安裝protobuf類似,依照INSTALL中的步驟即可。安裝最後一步make install後,如果提示:Your system is ready類似的訊息,說明安裝成功,也可能會說沒有protobuf,這就是因為前面protobuf安裝後沒有設定好路徑。

參考文獻

RPC的內容:http://blog.csdn.net/mindfloating/article/details/39473807 gRPC官網:http://blog.csdn.net/mindfloating/article/details/39473807 protobuf官網:https://developers.google.com/protocol-buffers/