常见问题

常见问题

以下是一些常见问题。希望您能在这里找到答案 :-)

什么是 gRPC?

gRPC 是一个现代化的开源远程过程调用(RPC)框架,可以在任何地方运行。它使客户端和服务器应用程序能够透明地进行通信,并使构建连接系统变得更加容易。

阅读更详尽的 动机与设计原则 文章,了解我们创建 gRPC 的背景。

gRPC 代表什么意思?

当然是 gRPC Remote Procedure Calls(gRPC 远程过程调用)!

我为什么要使用 gRPC?

主要使用场景

  • 低延迟、高可扩展的分布式系统。
  • 开发与云服务器通信的移动客户端。
  • 设计需要精确、高效且独立于语言的新协议。
  • 分层设计以支持扩展,例如身份验证、负载均衡、日志记录和监控等。

谁在用它,为什么要用它?

gRPC 是一个 云原生计算基金会 (CNCF) 项目。

Google 在很长一段时间里一直在 gRPC 中使用许多底层技术和概念。目前的实现正在 Google 的多个云产品和 Google 对外 API 中使用。它也被 Square, Netflix, CoreOS, Docker, CockroachDB, Cisco, Juniper Networks 以及许多其他组织和个人所使用。

支持哪些编程语言?

有关官方支持的语言和平台,请参阅 官方支持

如何开始使用 gRPC?

您可以按照此处的说明开始安装 gRPC。或者前往 gRPC GitHub 组织页面,选择您感兴趣的运行时或语言,并按照 README 说明操作。

gRPC 使用什么许可证?

所有实现均在 Apache 2.0 许可下发布。

我该如何贡献?

非常欢迎 贡献者,存储库托管在 GitHub 上。我们期待社区的反馈、补充和错误报告。个人贡献者和企业贡献者都需要签署我们的 CLA。如果您有关于 gRPC 周边项目的想法,请阅读指南并提交至此处。我们在 GitHub 上的 gRPC 生态系统 组织下有一个不断增长的项目列表。

文档在哪里?

直接在 grpc.io 上查看文档

路线图是什么?

gRPC 项目有一个 RFC 流程,通过该流程可以设计并批准新功能的实现。它们在 这个存储库 中进行跟踪。

gRPC 发布版本支持多久?

gRPC 项目不发布 LTS(长期支持)版本。鉴于上述滚动发布模型,我们支持当前最新版本和前一个版本。这里的支持意味着错误修复和安全修复。

gRPC 的版本控制策略是什么?

请在此处查看 gRPC 版本控制策略 这里

最新的 gRPC 版本是什么?

最新的发布标签是 v1.78.1。

gRPC 何时发布版本?

gRPC 项目的工作模式是主分支的尖端版本始终保持稳定。该项目(跨各种运行时)致力于尽可能每 6 周发布一次检查点版本。查看发布计划 这里

我该如何报告 gRPC 中的安全漏洞?

要报告 gRPC 中的安全漏洞,请遵循记录在 这里 的流程。

我可以在浏览器中使用它吗?

gRPC-Web 项目现已全面可用(Generally Available)。

我可以使用我最喜欢的数据格式(JSON、Protobuf、Thrift、XML)配合 gRPC 使用吗?

是的。gRPC 被设计为可扩展以支持多种内容类型。初始版本包含对 Protobuf 的支持,并提供对其他内容类型(如 FlatBuffers 和 Thrift)的外部支持,成熟度各不相同。

我可以在服务网格中使用 gRPC 吗?

是的。gRPC 应用程序可以像任何其他应用程序一样部署在服务网格中。gRPC 还支持 xDS API,这使得在无需 Sidecar 代理的情况下部署 gRPC 应用程序成为可能。gRPC 支持的无代理(proxyless)服务网格功能列在 这里

gRPC 如何帮助移动应用程序开发?

gRPC 和 Protobuf 提供了一种简单的方法来精确定义服务,并为 iOS、Android 和提供后端的服务器自动生成可靠的客户端库。客户端可以利用高级流式处理和连接功能,这些功能有助于节省带宽、在更少的 TCP 连接上完成更多操作,并节省 CPU 使用率和电池寿命。

为什么 gRPC 比 HTTP/2 上的任何二进制 blob 更好?

在网络传输层面,这很大程度上就是 gRPC 的本质。然而,gRPC 还是一组库,旨在跨平台提供普通 HTTP 库通常不具备的更高级功能。这些功能的示例包括:

  • 在应用层进行流控制交互
  • 级联调用取消
  • 负载均衡和故障转移

gRPC 相比 REST 是更好还是更差?

gRPC 在 HTTP/2 上基本遵循 HTTP 语义,但我们明确允许全双工流。我们与典型的 REST 约定有所偏离,因为出于性能原因,我们在调用调度期间使用静态路径,解析路径、查询参数和有效负载体中的调用参数会增加延迟和复杂性。我们还形式化了一组错误,我们认为这些错误比 HTTP 状态码更直接适用于 API 用例。

gRPC 怎么读?

读作 Jee-Arr-Pee-See。