天天看點

c++用戶端 grpc_gRPC · Envoy proxy中文文檔

gRPC

gRpc 是來自 Google 的 RPC 架構。它使用協定緩沖區作為底層 序列化 /IDL(接口描述語言的縮寫) 格式。在傳輸層,它使用 HTTP/2 進行請求/響應複用。Envoy 在傳輸層和應用層都提供對 gRPC 的一流支援:

gRPC 使用 HTTP/2 trailers 特性(可以在 HTTP 請求和響應封包後追加 HTTP Header)來傳送請求狀态。Envoy 是能夠正确支援 HTTP/2 trailers 的少數幾個 HTTP 代理之一,是以也是可以傳輸 gRPC 請求和響應的代理之一。

某些語言的 gRPC 運作時相對不成熟。Envoy 支援 gRPC 橋接過濾器,允許 gRPC 請求通過 HTTP/1.1 發送給 Envoy。然後,Envoy 将請求轉換為 HTTP/2 以傳輸到目标伺服器。該響應被轉換回 HTTP/1.1。

安裝後,除了标準的全局 HTTP 統計資料之外,橋接過濾器還會根據每個 RPC 統計資料進行收集。

gRPC-Web 由一個指定的過濾器支援,該過濾器允許 gRPC-Web 用戶端通過 HTTP/1.1 向 Envoy 發送請求并代理到 gRPC 伺服器。目前相關團隊正在積極開發中,預計它将成為 gRPC 橋接過濾器的後續産品。

gRPC-JSON 轉碼器由一個指定的過濾器支援,該過濾器允許 RESTful JSON API 用戶端通過 HTTP 向 Envoy 發送請求并擷取代理到 gRPC 服務。

gRPC 服務

除了在資料層面上代理 gRPC 外,Envoy 在控制層面也使用了 gRPC,它從中擷取管理伺服器的配置以及過濾器中的配置,例如用于速率限制)或授權檢查。我們稱之為 gRPC 服務。

當指定 gRPC 服務時,必須指定使用 Envoy gRPC 用戶端或 Google C ++ gRPC 用戶端。我們在下面的這個選擇中讨論權衡。

Envoy gRPC 用戶端是使用 Envoy 的 HTTP/2 上行連接配接管理的 gRPC 的最小自定義實作。服務被指定為正常 Envoy 叢集,定期處理逾時、重試、終端發現、負載平衡、故障轉移、負載報告、斷路、健康檢查、異常檢測。它們與 Envoy 的資料層面共享相同的連接配接池機制。同樣,叢集統計資訊可用于 gRPC 服務。由于用戶端是簡化版的 gRPC 實作,是以不包括諸如 OAuth2 或 gRPC-LB 之類的進階 gRPC 功能後備。

Google C++ gRPC 用戶端基于 Google 在 https://github.com/grpc/grpc 上提供的 gRPC 參考實作。它提供了 Envoy gRPC 用戶端中缺少的進階 gRPC 功能。Google C++ gRPC 用戶端獨立于 Envoy 的叢集管理,執行自己的負載平衡、重試、逾時、端點管理等。Google C++ gRPC 用戶端還支援自定義身份驗證插件。

在大多數情況下,當你不需要 Google C++ gRPC 用戶端的進階功能時,建議使用 Envoy gRPC 用戶端。這使得配置和監控更加簡單。如果 Envoy gRPC 用戶端中缺少你所需要的功能,則應該使用 Google C++ gRPC 用戶端。

Copyright © ServiceMesher 2018 all right reserved,powered by Gitbook最後更新于

2019-07-28 10:23:37