gRPC Java的代碼架構


RPC(遠程過程調用) 的架構最常見的是“動態代理”方式,事先定義好接口,用一個代理假裝實現了這個接口(真正的實現放在服務端),供客戶端調用,代理內部將該方法調用封裝成一個網絡請求送到服務端。服務端根據參數找到對應的注冊好的對象處理,返回給客戶端。

官網的gRPC的宏觀的架構圖如下:

image

客戶端調用 stub 對象,所謂 stub 對象就類似代理對象一樣。作為跟服務通訊的封裝抽象。

在 gRPC 里,stub 對象將請求用 protobuf 方式序列化成字節流,用於線上傳輸,到 server 端后調用真正的實現對象處理。 

 

Java 的客戶端和服務器實現也是遵循這個架構的。

gRPC-Java 的插件會給我們自動產生一個 GreeterGrpc(招待員類)封裝了三種跟服務器接口通訊的方案:

  • 同步阻塞調用;
  • 異步回調;
  • 同步非阻塞。

image

 

對於 Stub ,可以用下面思維導圖簡單描述:

客戶端的調用都是通過 Stub的。

image

所有 Stub 的 new 都需要傳入一個 channel 參數。

管道層 gRPC 默認提供了 4鍾 Channel,如下圖:

 

image

 

 

參考資料:

gRPC 入門及源碼分析
http://evthoriz.com/2015/07/07/gRPC-tutorial/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM