gRPC 问答
以下是一些常见问题。希望您在这里找到答案:-)
什么是 gRPC??#
gRPC 是一个现代的开源远程过程调用(RPC)框架,可以在任何地方运行。它使 client 和 server 应用程序能够透明地通信,并使构建连接系统变得更容易。
阅读更长的 动机和设计原则 文章,了解我们创建 gRPC 的背景。
gRPC 代表什么?#
gRPC Remote Procedure Calls, of course!
gRPC 远程过程调用!
我为什么要使用 gRPC?#
主要使用场景:
- 低延迟、高度可扩展的分布式系统。
- 开发与云 server 通信的移动客户端。
- 设计一个新的协议,需要准确、高效和语言无关。
- 分层设计,支持扩展,如身份验证、负载平衡、日志记录和监控等。
谁在用这个,为什么?#
gRPC 是一个 云原生计算基金会 (CNCF)项目。
长期以来,谷歌一直在 gRPC 中使用许多底层技术和概念。当前的实现正在 Google 的一些云产品和面向外部的 API 中使用。它也被 Square, Netflix, CoreOS, Docker, CockroachDB, Cisco, Juniper Networks 和许多其他组织和个人使用。
支持哪些编程语言?#
请参阅 官方支持的语言和平台。
如何开始使用 gRPC?#
您可以按照 此处 的说明开始安装 gRPC。或者转到 gRPC GitHub org page,选择您感兴趣的运行时或语言,并按照自述说明进行操作。
gRPC 使用哪种许可证?#
所有实现都在 Apache 2.0 下获得许可。
我该如何贡献?#
Contributors 非常受欢迎,存储库托管在 GitHub 上。我们期待社区反馈、添加和错误。个人贡献者和公司贡献者都需要签署我们的 CLA。如果您有关于 gRPC 项目的想法,请阅读指南并在 此处. 提交。我们在 GitHub 上的 gRPC Ecosystem 生态系统组织下有越来越多的项目。
文档在哪里?#
查看 grpc.io 上的 文档。
路线图是什么?#
gRPC 项目有一个 RFC 流程,通过该流程设计并批准实施新功能。它们在该 存储库中被跟踪。
gRPC 版本支持多长时间?#
gRPC 项目不进行 LTS 发布。鉴于上述滚动发布模型,我们支持当前、最新版本和之前的版本。这里的支持意味着错误修复和安全修复。
gRPC 版本控制政策是什么?#
请参阅此处的 gRPC 版本控制策略。
最新的 gRPC 版本是什么?#
最新版本标签为 v1.46.3。
gRPC 何时发布?#
gRPC 项目在主分支尖端始终稳定的模型中工作。该项目(跨各种运行时)的目标是在尽力而为的基础上每 6 周发布一次检查点版本。请参阅此处的发布时间表。
如何报告 gRPC 中的安全漏洞?#
要报告 gRPC 中的安全漏洞,请遵循 此处记录的流程。
我可以在浏览器中使用它吗?#
gRPC-Web 项目通常可用。
我可以用我最喜欢的数据格式(JSON、Protobuf、Thrift、XML)使用 gRPC 吗?#
对 gRPC 被设计为可扩展的,以支持多种内容类型。初始版本包含对 Protobuf 的支持,以及对其他内容类型(如 FlatBuffers 和 Thrift)的外部支持,其成熟度不同。
我可以在 service mesh 中使用 gRPC 吗?#
对 gRPC 应用程序可以像任何其他应用程序一样部署在 service mesh 中。gRPC 还支持 xDS APIs ,它支持在 service mesh 中部署 gRPC 应用程序,而无需 sidecar 代理。 此处列出了 gRPC 支持的 proxyless service mesh 功能。
gRPC 如何帮助移动应用程序开发?#
gRPC 和 Protobuf 提供了一种简单的方法来精确定义服务,并为 iOS、Android 和提供后端的 server 自动生成可靠的客户端库。客户端可以利用先进的流和连接功能,这有助于节省带宽,通过更少的 TCP 连接完成更多工作,并节省 CPU 使用和电池寿命。
为什么 gRPC 优于 HTTP/2 上的任何 binary blob?#
这在很大程度上是 gRPC 正在进行的工作。然而,gRPC 也是一组库,可以跨平台一致地提供普通 HTTP 库通常不具备的更高级别功能。这些特征的示例包括:
- 与应用层的 flow-control
- call-cancellation 取消
- load balancing & failover
为什么 gRPC 比 REST 更好 / 更差?#
gRPC 在很大程度上遵循 HTTP/2 上的 HTTP 语义,但我们明确允许全双工流。我们与典型的 REST 约定不同,因为我们在调用调度期间出于性能原因使用静态路径,因为从路径、查询参数和有效负载体解析调用参数会增加延迟和复杂性。我们还形式化了一组错误,我们认为这些错误比 HTTP status code 更直接适用于 API 用例。
gRPC 怎么发音?#
Jee-Arr-Pee-See.
推荐文章: