gRPC 專用的 Cloud Endpoints

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

使用 gRPC 其中一個主要優點是,您可以針對文件使用服務設定以及 API 介面定義檔案來產生 API 的參考文件。詳情請參閱開發人員入口網站總覽

API 管理

Endpoints 可搭配可擴充服務 Proxy (ESP) 使用,以提供 API 管理功能。

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

gRPC Endpoints 服務

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

支援的運算平台

ESP 是一個開放原始碼專案,可透過以下方式使用:

  • Google Container Registry 中的容器。如要瞭解目前的 Docker 映像檔,請參閱 ESP 版本資訊
  • GitHub 中的原始碼。如要進一步瞭解如何建構 ESP,請參閱 ESP README

您可以在下列環境執行 ESP 容器:

如要瞭解在 GCP 運算平台部署 API 與 ESP 的資訊,請參閱部署 API 後端

服務定義與設定

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;
}

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

轉碼

Endpoints 為您的 gRPC 服務提供通訊協定的轉譯,允許用戶端使用 HTTP/JSON 透過可擴充服務 Proxy 與 gRPC 服務進行通訊。

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

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

限制

Endpoints 尚不支援下列 gRPC 功能:

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

Endpoints 不支援 gRPC 服務的 App Engine 環境,只支援 GKE 與 Compute Engine。

相關資源

  • 依照我們提供的教學課程,在您的環境中使用 Cloud Endpoints 快速執行簡單的 gRPC 服務。
  • 瞭解如何設定適用於 Cloud Endpoints 的 gRPC 服務
  • 探索範例。GitHub 提供下列程式語言的 getting-started-grpc 範例:
  • 下列程式語言有提供 Bookstore 範例: