本頁面提供 Cloud Run 專屬詳細資料,供想使用 gRPC 連線 Cloud Run 服務與其他服務的開發人員參考,例如在內部微服務之間提供簡單的高效能通訊。您可以在 Cloud Run 中使用所有 gRPC 類型,包括串流或一元。
可能的用途包括:
- 內部微服務之間的通訊。
- 資料負載量高 (gRPC 使用通訊協定緩衝區,比 REST 呼叫快七倍)。
- 您只需要簡單的服務定義,不需要編寫完整的用戶端程式庫。
- 在 gRPC 伺服器中使用串流 gRPC,建構反應更快速的應用程式和 API。
如要整合服務與 gRPC:
- 如果您使用串流 gRPC,請將服務設定為使用 HTTP/2。HTTP/2 是 gRPC 串流的傳輸方法。
- 在 proto 檔案中定義要求訊息和回應,然後編譯這些訊息和回應。
- 建立 gRPC 伺服器來處理要求並傳回回應:伺服器應監聽
PORT
環境變數。 - 建立用戶端,傳送要求並處理 gRPC 伺服器的回應。
- 視需要新增驗證。
- 建構及部署服務。
將服務設定為使用 HTTP/2
如果您將 gRPC 與 Cloud Run 搭配使用,Google 建議將服務設定為使用 HTTP/2。雖然部分簡單的 gRPC 功能不需使用 HTTP/2 即可運作,但許多 gRPC 功能 (例如串流和中繼資料) 都需要 HTTP/2。
在 Proto 檔案中定義及編譯訊息
您不必在 proto 定義中加入任何額外或 Cloud Run 專屬項目。與使用任何其他 gRPC 服務一樣,您可以使用 gRPC 通訊協定緩衝區進行服務定義和資料序列化。
建立 gRPC 用戶端
使用 gRPC 的用戶端不需要新增額外或 Cloud Run 專屬項目:請參閱 gRPC 說明文件,瞭解如何在用戶端程式碼中使用服務定義,以及語言專屬 gRPC 教學課程中提供的範例用戶端。
自動調度資源與負載平衡
Cloud Run 使用 Google 管理的負載平衡器,可讓用戶端與 Cloud Run 執行個體之間的連線保持獨立。使用 gRPC 時,自動調整資源配置的行為如下:
- 用戶端的 gRPC 連線會在邊緣負載平衡器終止。調整
KeepAlive
設定只會影響與負載平衡器的連線,不會影響 Cloud Run 執行個體。用戶端無法辨識執行個體何時會停止運作。 - 縮減期間,負載平衡器會關閉連線,並在後端執行個體關閉時傳送 GOAWAY 訊息。
- 在擴充期間,負載平衡器會建立與後端執行個體的新連線。所有這些作業對用戶端來說都是透明的。
- 自動調度資源期間,許多執行個體可能會啟動,並多工處理用戶端與 Proxy 負載平衡器之間的單一連線。
- 訊息的並行數取決於每個執行個體的並行要求數量上限。在串流中,每個串流都會計入並行要求上限。
在 Cloud Run 服務中監聽 gRPC 要求
在 Cloud Run 中執行的 gRPC 伺服器,唯一特殊要求是監聽 PORT
環境變數指定的通訊埠,如下列程式碼所示:
Go
開啟與服務的 gRPC 連線
如要開啟與服務的 gRPC 連線,以便傳送 gRPC 訊息,您需要指定主機網域,也就是 Cloud Run 服務的網址或對應至該服務的自訂網域,以及 gRPC 預期使用的通訊埠 443。
Go
傳送未經驗證的 gRPC 要求
下列範例說明如何使用先前設定的 gRPC 連線,傳送未經驗證的要求。
Go
傳送通過驗證的 gRPC 要求
如果呼叫服務對接收服務具有調用者權限,下列範例會說明如何在服務之間使用驗證。請注意,這段程式碼會建立具有適當身分識別權杖的授權標頭,這是必要步驟。如需必要權限和授權標頭的詳細說明,請參閱服務對服務驗證。
Go
gRPC 串流的程式碼範例
如需程式碼範例,請參閱所選語言的 RouteGuide
gRPC 基礎教學課程。舉例來說,使用 Go 時請參閱「實作 RouteGuide」。