什么是 gRPC?

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

gRPC 代表什么?

gRPC Remote Procedure Calls, of course!
当然是gRPC远程过程调用!

我为什么要使用 gRPC?

主要使用场景:

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

谁在使用它,为什么?

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

长期以来,Google 一直在使用 gRPC 中的许多底层技术和概念。当前的实现被用于谷歌的几个云产品和谷歌面向外部的 API。Square, Netflix, CoreOS, Docker, CockroachDB, Cisco, Juniper Networks以及 许多其他组织和个人正在使用它。

支持哪些编程语言?

请参阅官方支持的语言和平台。

如何开始使用 gRPC?
您可以按照此处的说明开始安装 gRPC 。或前往gRPC GitHub 组织页面,选择您感兴趣的运行时或语言,然后按照 README 说明进行操作。

gRPC 在哪个许可证下?

所有实现都在Apache 2.0下获得许可.

我该如何贡献?

非常欢迎贡献者,存储库托管在 GitHub 上。我们期待社区的反馈、补充和错误。个人贡献者和企业贡献者都需要签署我们的 CLA。如果您对 gRPC 项目有想法,请阅读指南并在此处提交. 我们在gRPC 生态系统下拥有越来越多的项目列表GitHub 上的组织。

文档在哪里?

在 grpc.io 上查看文档。

什么是路线图?

gRPC 项目有一个 RFC 流程,通过该流程设计和批准新功能的实施。他们在这个存储库中被跟踪.

gRPC 版本支持多长时间?

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

什么是 gRPC 版本控制策略?

在此处查看 gRPC 版本控制策略. https://github.com/grpc/grpc/blob/master/doc/versioning.md

最新的 gRPC 版本是什么?

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

gRPC 何时发布?

gRPC 项目在 master 分支的尖端始终稳定的模型中工作。该项目(跨越各种运行时)旨在尽最大努力每 6 周发布一次检查点版本。在此处查看发布时间表.

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

要报告 gRPC 中的安全漏洞,请按照此处记录的流程进行操作.https://github.com/grpc/proposal/blob/master/P4-grpc-cve-process.md

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

gRPC -Web项目是普遍可用的。

我可以将 gRPC 与我最喜欢的数据格式(JSON、Protobuf、Thrift、XML)一起使用吗?

是的。gRPC 旨在可扩展以支持多种内容类型。初始版本包含对 Protobuf 的支持以及对其他内容类型的外部支持,例如 FlatBuffers 和 Thrift,处于不同的成熟度。

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

是的。gRPC 应用程序可以像任何其他应用程序一样部署在服务网格中。gRPC 还支持xDS API这使得在没有 sidecar 代理的服务网格中部署 gRPC 应用程序成为可能。gRPC 支持的无代理服务网格功能在此处列出.

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。