关于 gRPC

谁在使用 gRPC,为什么?

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

主要使用场景

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

使其出色的核心功能

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

谁在使用 gRPC,为什么?

许多公司已在其环境中使用 gRPC 连接多个服务。使用场景从连接少量服务到在本地或云环境中跨多种语言连接数百个服务不等。以下是我们一些早期采用者的详细信息和评价。

请查看下方评论。

在 Square,我们一直与 Google 合作,以便将我们所有的自定义 RPC 解决方案替换为 gRPC。我们决定转向 gRPC,因为它对多种平台开放支持,协议表现出色的性能,以及能够根据我们的网络进行定制和调整。Square 的开发人员期待能够利用编写流式 API 的优势,并在未来将 gRPC 推向网络边缘,与移动客户端和第三方 API 集成。

在我们最初使用 gRPC 时,我们能够轻松地将其扩展到我们自有的生态系统中。此外,我们通过拉取请求和与 Google 项目管理团队的互动,在直接改进 gRPC 方面取得了巨大成功。我们预计,由于采用 gRPC,开发人员的工作效率将有许多提升,并且能够支持非 JVM 语言的开发。

我们从自研的 RPC 系统切换到 gRPC 的过程非常顺利。我们很快利用了逐流流量控制,从而在同一连接上更好地调度大型 RPC 和小型 RPC。

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

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

gRPC 的背后故事

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

有关我们为何创建 gRPC 的更多背景信息,请参阅 gRPC 动机和设计原则,访问 gRPC 博客