使用 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:
- 设置 Code Engine CLI 环境。
- 创建项目。
-
使用
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
-
运行
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 中可用。