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 更高效。

  • Streaming- 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,必须指定格式为 [NAME:]PORT--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访问服务器。 有关用于部署 gRPC 服务器和客户机应用程序的 Code Engine 样本代码的更多信息,请参阅 Code Engine grpc 样本

GitHub 上的 IBM Cloud Code Engine 样本存储库 构建的 Code Engine 样本映像在公共 icr.io/codeengine 名称空间的 IBM Cloud® Container Registry 中可用。