gRPC 是一个由 Google 开发的高性能开源通用 RPC 框架。在 gRPC 中,客户端应用可以直接调用其他机器上的服务器应用中的方法,如同调用本地对象一样,从而让您更轻松地创建分布式应用和服务。
使用 gRPC 的主要优势之一是用于生成文档;您可以使用服务配置和 API 接口定义文件来生成 API 的参考文档。如需了解详情,请参阅开发者门户概览。
API 管理
Endpoints 可与 Extensible Service Proxy (ESP) 或 Extensible Service Proxy V2 (ESPv2) 配合使用来提供 API 管理功能。
借助适用于 gRPC 的 Endpoints,您可以使用 Endpoints 的 API 管理功能向您的 gRPC 服务添加 API 控制台、监控、托管、跟踪、身份验证等。此外,您指定了特殊的映射规则以后,ESP 和 ESPv2 会将基于 HTTP 的 RESTful JSON 转换为 gRPC 请求。这意味着您可以部署由 Endpoints 管理的 gRPC 服务器,并通过 gRPC 或 JSON/HTTP 客户端调用其 API,从而为您提供更高的灵活性,也为您将其与其他系统集成提供了便利。
您可以使用 gRPC 支持的任何语言针对 Endpoints 创建 gRPC 服务。您可以在 gRPC 网站上找到关于 gRPC 的更多信息,包括用于创建服务器和客户端的快速入门和教程等内容。
支持的计算平台
ESP 和 ESPv2 均为开源项目,您可以通过以下方式获得:
- Google Container Registry 中的容器。
- 请参阅 ESP 版本说明,了解有关当前 ESP Docker 映像的信息。
- 如需了解当前的 ESPv2 Docker 映像,请参阅 ESPv2 版本说明。
- GitHub 中的源代码。
- 如需详细了解如何构建 ESP,请参阅 ESP README。
- 如需详细了解如何构建 ESPv2,请参阅 ESPv2 README 文件。
您可以在以下环境中运行 ESP 容器:
- 带 Docker 的 Compute Engine
- Kubernetes(包括 Google Kubernetes Engine)
- Linux 或 macOS 计算机或其他云提供商
您可以在以下环境中运行 ESPv2 容器:
- Cloud Run
- Knative serving
- GKE
- Compute Engine
- Kubernetes
如需了解详情,请参阅 Cloud Endpoints 简介。
请参阅部署 API 后端,了解更多有关在 GCP 计算平台上部署 API 和 ESP 的信息。
服务定义和配置
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 与 Endpoints 配合使用,您必须提供服务配置以及服务定义。这将配置服务的运行时行为,包括身份验证、服务中包含的 API、从 HTTP 请求到 gRPC 方法的映射以及特殊的 Cloud Endpoints 设置。
转码
Endpoints 可为 gRPC 服务提供协议转换,从而使客户端可以使用 HTTP/JSON 通过 ESP 或 ESPv2 与 gRPC 服务进行通信。
最常见的使用场景是允许浏览器客户端与 gRPC 服务器通信,而无需 gRPC 客户端库提供特殊支持。Endpoints 提供了一种机制,可在服务配置过程中将 HTTP 请求映射到 gRPC 方法。
您可以在将 HTTP/JSON 转码为 gRPC 中找到更多相关信息。
限制
Endpoints 尚不支持以下 gRPC 功能:
- 负载压缩
- 协议缓冲区以外的任何 IDL
此外,Endpoints 仅支持适用于 GKE、Compute Engine 和 Cloud Run(Beta 版)的 gRPC 服务。Endpoints 不支持适用于 App Engine 环境的 gRPC 服务。
后续步骤
- 按照我们的某个教程,在您选择的环境中使用 Cloud Endpoints 启动并运行简单的 gRPC 服务
- 了解如何针对 Cloud Endpoints 配置 gRPC 服务
- 探索示例。GitHub 上提供了以下语言版本的 getting-started-grpc 示例:
- Bookstore 示例提供以下语言的版本: