gRPC學習

grpc的概述

grpc可以使用**protocol buffers(簡單應用可以參考上一篇文章)**作爲接口定義語言(IDL)和底層消息交換格式。
優點

使用GRPC,我們可以在A.Pro文件中定義我們的服務,並實現任何GRPC支持的語言中的客戶端和服務器,這可以在從谷歌內部服務器到您自己的平板電腦的環境中運行——所有的語言和環境之間的通信的複雜性都由GRPC處理。我們還獲得了使用協議緩衝區的所有優點,包括高效的序列化、簡單的IDL和簡單的接口更新。

概覽

在gRPC中,客戶機應用程序可以直接調用另一臺計算機上的服務器應用程序上的方法,就好像它是本地對象一樣,這使您更容易創建分佈式應用程序和服務。與許多RPC系統一樣,gRPC基於定義服務的思想,指定可以使用其參數和返回類型遠程調用的方法。在服務器端,服務器實現這個接口並運行gRPC服務器來處理客戶端調用。在客戶端,客戶端有一個存根(在某些語言中稱爲客戶端),它提供與服務器相同的方法
調用實例:
在這裏插入圖片描述
gRPC客戶機和服務器可以在各種環境中運行並相互通信—從谷歌內部的服務器到您自己的桌面—並且可以用gRPC支持的任何語言編寫。因此,例如,您可以很容易地用Java創建gRPC服務器,用Go、Python或Ruby創建客戶機。此外,最新的googleapi將有gRPC版本的接口,使您可以輕鬆地將Google功能構建到您的應用程序中。

RPC調用的生命週期
最簡單的一元調用:

  1. 一旦client調用了rpc方法在客戶端的存根,就會通知服務器,已使用此調用的客戶機元數據、方法名和指定的截止日期(如果適用)調用了RPC。
  2. 然後,服務器可以直接發送回它自己的初始元數據(必須在任何響應之前發送),或者等待客戶機的請求消息(首先發生的是特定於應用程序的消息)
  3. 一旦服務器收到客戶機的請求消息,它就會執行創建和填充其響應所需的任何工作。然後將響應(如果成功)連同狀態詳細信息(狀態代碼和可選狀態消息)和可選的尾部元數據返回給客戶端。
  4. 如果狀態爲OK,則客戶端將獲得響應,從而在客戶端完成調用。

gRPC vs. Restful API
作用:都用於server/client模型通信,都是用http作爲的層的傳輸協議(grpc使用http2.0,restful api不一定)
不同:
1.grpc可以通過protobuf來定義接口,從而可以有更加嚴格的接口約束條件
2.通過protobuf可以將數據序列華爲二進制編碼,這會大幅減少需要傳輸的數據量,從而大幅提高性能。
3.gRPC可以方便的支持流式通信

參考頁面:
https://www.grpc.io/docs/guides/
https://www.grpc.io/docs/tutorials/basic/go/
https://www.jianshu.com/p/9c947d98e192

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