关于 gRPC

谁在使用 gRPC 以及为什么

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

主要使用场景

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

使其出色的核心特性

  • 11 种语言的惯用客户端库
  • 在线路上高效且具有简单的服务定义框架
  • 基于 http/2 传输的双向流
  • 可插拔的身份验证、跟踪、负载均衡和健康检查

谁在使用 gRPC 以及为什么?

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

查看下面人们的评价。

在 Square,我们一直在与 Google 合作,以便将我们所有自定义 RPC 解决方案的使用替换为 gRPC。我们决定转向 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 博客上。