关于 gRPC

谁在使用 gRPC 以及为什么

gRPC 是一个现代的开源高性能远程过程调用(RPC)框架,可以在任何环境中运行。它可以高效地连接数据中心内部和跨数据中心的服务,并提供可插拔的负载均衡、分布式追踪、健康检查和身份验证支持。它也适用于分布式计算的“最后一公里”,用于连接设备、移动应用和浏览器到后端服务。

主要使用场景

  • 高效连接微服务架构中的多语言服务
  • 连接移动设备、浏览器客户端到后端服务
  • 生成高效的客户端库

令其出色的核心特性

  • 支持 11 种语言的惯用客户端库
  • 高效的传输协议和简单的服务定义框架
  • 基于 HTTP/2 传输的双向流
  • 可插拔的认证、分布式追踪、负载均衡和健康检查

谁在使用 gRPC 以及为什么?

许多公司已经在其环境中采用 gRPC 来连接多个服务。使用场景多样,从连接少量服务到在本地或云环境中跨多种语言连接数百个服务。以下是一些早期采用者的详细介绍和引言。

查看下面的用户评价。

在 Square,我们一直与 Google 合作,以便用 gRPC 替代我们所有自定义 RPC 解决方案的使用。我们决定转向 gRPC,因为它对多种平台的开放支持、已证明的协议性能以及定制和适应我们网络的能力。Square 的开发者期待能够利用流式 API 的编写,并在未来将 gRPC 推向网络边缘,以便与移动客户端和第三方 API 集成。

在我们最初使用 gRPC 时,我们能够轻松地对其进行扩展,使其融入我们特有的生态系统。此外,通过 pull request 以及与 Google 团队管理的项目互动,我们在直接改进 gRPC 方面取得了巨大成功。我们预计采用 gRPC 将显著提高开发人员的工作效率,并能够支持非 JVM 语言的开发。

我们从自研 RPC 系统转向 gRPC 的过程非常顺利。我们迅速利用了按流的流量控制特性,从而在同一连接上更好地调度大型 RPC 和小型 RPC。

凭借对高性能双向流、基于 TLS 的安全性以及多种编程语言的支持,gRPC 是模型驱动配置和遥测的理想统一传输协议。

gRPC 基于 HTTP/2 传输构建,这为我们带来了原生的双向流能力和请求头中灵活的自定义元数据。第一点对于大型载荷交换和网络遥测场景很重要,而后者使我们能够扩展和包含多种网络元素认证机制等能力。此外,gRPC/proto3 带来的广泛语言绑定支持,使我们能够为内部和外部消费者提供灵活快速的开发环境。最后但同样重要的是,尽管存在许多用于配置、操作状态检索和网络遥测的网络通信协议,gRPC 为我们提供了一种统一灵活的协议和传输方式,简化了客户端/服务器交互。

gRPC 背后的故事

gRPC 最初由 Google 创建,Google 十多年来一直使用一种名为 Stubby 的单一通用 RPC 基础设施来连接在其数据中心内部和跨数据中心运行的大量微服务。2015 年 3 月,Google 决定构建 Stubby 的下一版本并将其开源。由此产生了 gRPC,现在许多 Google 以外的组织也在使用它来支持从微服务到计算“最后一公里”(移动、Web 和物联网)的各种用例。

关于我们创建 gRPC 的更多背景信息,请参阅 gRPC 动机和设计原则(位于 gRPC 博客)。