IBM Cloud Docs
使用 gRPC 實作應用程式

使用 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:

  1. 使用 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
    
  2. 執行 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。