使用 gRPC 實作應用程式
使用 Code Engine,您可以配置應用程式以 gRPC 伺服器身分執行,以利用 gRPC 特性來處理用戶端呼叫。
gRPC 是現代開放程式碼高效能遠端程序呼叫 (RPC) 架構,可連接資料中心內及資料中心之間的服務。 提供有效率的二進位序列化、雙向串流、用戶端和伺服器的負載平衡、追蹤、性能檢查及鑑別。 如需相關資訊,請參閱 gRPC 文件。
使用 gRPC 的好處
gRPC 在促進用戶端與伺服器之間的通訊方面提供數個優點。 gRPC 的基本層面是定義明確的介面,以封裝可用於遠端呼叫的所有方法和參數。 在伺服器端,實作此介面是為了有效地處理及回應用戶端要求。
這種搭配使用 gRPC 與 Code Engine 應用程式的方法可提供好處。
-
交互作業能力- gRPC 用戶端和伺服器可以在各種環境中執行並彼此通訊。 例如,您可以使用 Go 語言來定義伺服器,而用戶端是在 Java中定義。
-
序列化- gRPC 使用通訊協定緩衝區來進行訊息序列化,從大小和速度而言,比在 HTTP API 中使用 JSON 更有效率。
-
串流- gRPC 支援雙向串流,以便用戶端及伺服器透過單一連線同步傳送及接收訊息。
-
錯誤偵測- gRPC 會透過通訊協定緩衝區 (
.proto
檔案),在用戶端與伺服器之間施行高度類型化的合約。 此合約可確保用戶端及伺服器同意介面及資料結構,以提供更好的程式碼產生、驗證及錯誤處理。 -
安全- gRPC 支援各種鑑別和加密方法,包括相互 TLS,可在用戶端與伺服器之間提供安全通訊。
配置 Code Engine 應用程式以使用 gRPC
專案層次的 Code Engine 應用程式支援 gRPC,這表示您的 Code Engine gRPC 伺服器應用程式只能提供資料流量給在相同專案中執行的用戶端。
您必須使用 Code Engine CLI 來配置 Code Engine gRPC 應用程式。
開始之前
從 Code Engine:
- 設定 Code Engine CLI 環境。
- 建立專案。
-
使用
ibmcloud ce application create
指令建立及部署應用程式。 如果要指出這個應用程式支援使用 HTTP/2 作為傳輸模式的 gRPC,您必須指定--port
選項,格式為[NAME:]PORT
; 例如--port h2c:8080
。 當[NAME:]
為h2c
時,埠會使用未加密的 HTTP/2。 依預設,Code Engine 會假設應用程式在埠8080
上接聽送入的連線。在下列範例中,使用
myapp-grpcserver
作為伺服器應用程式的名稱,並指定icr.io/codeengine/grpc-server
作為要參照的映像檔。ibmcloud ce application create --name myapp-grpcserver --port h2c:8080 --min-scale 1 --image icr.io/codeengine/grpc-server
-
執行
application get
指令,以顯示應用程式的詳細資料。ibmcloud ce application get --name myapp-grpcserver
輸出範例
[...] OK Name: myapp-grpcserver ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f Project Name: myproject [...] Port: h2c:8080 [...]
既然您的伺服器應用程式已建立並部署為使用 gRPC,您必須在相同的專案內部署用戶端應用程式,才能使用 gRPC來存取伺服器。 如需 Code Engine 用於部署 gRPC 伺服器及用戶端應用程式之範例程式碼的相關資訊,請參閱 Code Engine grpc
範例。
Code Engine 範例映像檔 (從 GitHub上的 IBM Cloud Code Engine 範例儲存庫建置) 位於公用 icr.io/codeengine
名稱空間中的 IBM Cloud® Container Registry。