gRPC 總覽

gRPC 由 Google 開發,是一種高效能的開放原始碼通用遠端程序呼叫 (RPC) 架構。在 gRPC 中,用戶端應用程式可以直接呼叫不同機器上的伺服器應用程式方法,就像是本機物件一樣,讓建立分散式應用程式和服務變得更加容易。

使用 gRPC 的主要優點之一是可以產生說明文件。您可以使用服務設定和 API 介面定義檔案,為 API 產生參考說明文件。

API 管理

有了 gRPC 專用的 API Gateway,您就能使用 API Gateway 的 API 管理功能,為 Cloud Run 上的 gRPC 服務新增監控、託管、追蹤、驗證等功能。此外,一旦您指定了特殊對應規則,API Gateway 就會將經由 HTTP 的符合 REST 樣式的 JSON 轉譯為 gRPC 要求。這表示您可以部署由 API Gateway 代管的 gRPC 伺服器,並使用 gRPC 或 JSON/HTTP 用戶端呼叫 API,為您提供更大的彈性,且容易與其他系統整合。

您可以使用任何 gRPC 支援的語言,為 API Gateway 建立 gRPC 服務。您可以在 gRPC 網站上找到有關 gRPC 的更多資訊,包含建立伺服器與用戶端的快速入門及其他教學課程。

服務定義與設定

gRPC 的概念是定義服務,指定可透過遠端呼叫的方法,以及這些方法的參數和傳回類型。在預設情況下,gRPC 使用通訊協定緩衝區做為介面定義語言 (IDL),以描述服務介面與酬載訊息架構。

// The greeting service definition.
service Greeter {
  // Sends a greeting
  rpc SayHello (HelloRequest) returns (HelloReply) {}
}

// The request message containing the user's name.
message HelloRequest {
  string name = 1;
}

// The response message containing the greetings
message HelloReply {
  string message = 1;
}

如要搭配 API Gateway 使用 gRPC,您必須提供服務設定以及服務定義。這會設定服務的執行階段行為,包含驗證、服務中的 API、從 HTTP 要求到 gRPC 方法的對應,以及特殊的 API Gateway 設定。

轉碼

API Gateway 會為 Cloud Run 上的 gRPC 服務提供通訊協定轉譯,讓用戶端可使用 HTTP/JSON 透過 API Gateway 與 gRPC 服務進行通訊。

最常見的用途是允許瀏覽器用戶端與 gRPC 伺服器通訊,而無需 gRPC 用戶端程式庫提供特殊支援。API Gateway 提供一種機制,可將 HTTP 要求對應到 gRPC 方法,以做為服務配置的一部分。

您可以在將 HTTP/JSON 轉碼為 gRPC 中取得更多相關資訊。

限制

API Gateway 尚不支援下列 gRPC 功能:

  • 酬載壓縮
  • 除了通訊協定緩衝區以外的任何 IDL

API Gateway 目前僅支援 Cloud Run gRPC 服務。

後續步驟

  • 探索範例。您可以在 GitHub 取得下列程式語言的 getting-started-grpc 範例:
  • 下列程式語言有提供 Bookstore 範例: