gRPC 概览

gRPC 是一个由 Google 开发的高性能开源通用 RPC 框架。在 gRPC 中,客户端应用可以直接调用其他机器上的服务器应用中的方法,如同调用本地对象一样,从而让您更轻松地创建分布式应用和服务。

使用 gRPC 的主要优势之一是用于生成文档;您可以使用服务配置和 API 接口定义文件来生成 API 的参考文档。

API 管理

借助适用于 gRPC 的 API Gateway,您可以使用 API Gateway 的 API 管理功能向 Cloud Run 上的 gRPC 服务添加监控、托管、跟踪、身份验证等。此外,您指定了特殊的映射规则以后,API Gateway 会将基于 HTTP 的 RESTful JSON 转换为 gRPC 请求。这意味着您可以部署由 API Gateway 管理的 gRPC 服务器,并通过 gRPC 或 JSON/HTTP 客户端调用其 API,从而为您提供更高的灵活性,也为您将其与其他系统集成提供了便利。

您可以使用 gRPC 支持的任何语言针对 API Gateway 创建 gRPC 服务。您可以在 gRPC 网站上找到关于 gRPC 的更多信息,包括用于创建服务器和客户端的快速入门和教程等内容。

服务定义和配置

gRPC 基于定义服务的思路,指定可以远程调用的方法及其参数和返回类型。默认情况下,gRPC 使用 Protocol Buffers 作为接口定义语言 (IDL) 来描述服务接口和负载消息的结构。

// The greeting service definition.
service Greeter {
  // Sends a greeting
  rpc SayHello (HelloRequest) returns (HelloReply) {}
}

// The request message containing the user's name.
message HelloRequest {
  string name = 1;
}

// The response message containing the greetings
message HelloReply {
  string message = 1;
}

要将 gRPC 与 API Gateway 结合使用,您必须提供服务配置以及服务定义。这将配置服务的运行时行为,包括身份验证、服务中包含的 API、从 HTTP 请求到 gRPC 方法的映射以及特殊的 API Gateway 设置。

转码

API Gateway 可为 Cloud Run 上的 gRPC 服务提供协议转换,从而使客户端可以使用 HTTP/JSON 通过 API Gateway 与 gRPC 服务进行通信。

最常见的使用场景是允许浏览器客户端与 gRPC 服务器通信,而无需 gRPC 客户端库提供特殊支持。API Gateway 提供了一种机制,可在服务配置过程中将 HTTP 请求映射到 gRPC 方法。

您可以在将 HTTP/JSON 转码为 gRPC 中找到更多相关信息。

限制

API Gateway 尚不支持以下 gRPC 功能:

  • 负载压缩
  • 协议缓冲区以外的任何 IDL

API Gateway 目前仅支持 Cloud Run gRPC 服务。

后续步骤

  • 探索示例。GitHub 上以下列语言提供了 getting-started-grpc 示例:
  • Bookstore 示例提供以下语言的版本: