gRPC FAQ

以下是一些常见的问题。希望你能在这里找到答案。

gRPC是什么?

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

请阅读《Motivation & Design Principles》这篇文章,了解为何创建gRPC。

gRPC代表什么?

当然是gRPC远程过程调用!

为什么我要使用gRPC?

主要使用场景:

    - 低延迟,高度可扩展,分布式系统。

    - 开发与云服务器通信的移动客户端。

    - 设计一个新的协议,需要准确,高效和语言独立。

    - 分层设计,以使扩展。身份验证、负载平衡、日志记录和监视等。

谁在使用这个,为什么?

gRPC是一个云本地计算基础(Cloud Native Computing Foundation, CNCF)项目。

长期以来,谷歌一直在使用gRPC中的大量底层技术和概念。目前的实现正在谷歌的一些云产品和谷歌对外的api中使用。Square、Netflix、CoreOS、Docker、CockroachDB、思科、瞻博网络(Juniper Networks)以及许多其他组织和个人也在使用它。

支持哪些编程语言?

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

gRPC属于哪个许可证?

所有实现都是在Apache 2.0下获得许可的。

我如何作出贡献?

我们非常欢迎投稿者,资料库也在GitHub上。我们期待着社区的反馈,添加和bug。个人及公司捐献者均须在我们的注册类别上签字。如果你有关于gRPC项目的想法,请阅读指导方针并在这里提交。我们在GitHub上的gRPC生态系统组织下的项目越来越多。

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

gRPC-Web 项目通常是可用的。

我可以使用gRPC与我最喜欢的数据格式(JSON, Protobuf, Thrift, XML) ?

是的。gRPC被设计为可扩展的,以支持多种内容类型。最初的版本包含了对Protobuf的支持,以及在不同成熟度级别上对其他内容类型(如FlatBuffers和Thrift)的外部支持。

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

是的。gRPC应用程序可以像其他应用程序一样部署在服务网格中。gRPC还支持 xDS APIs ,允许在没有sidecar代理的服务网格中部署gRPC应用程序。 这里列出了gRPC中支持的无代理网格服务特性。

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

gRPC和Protobuf提供了一种简单的方法来精确定义服务,并自动为iOS、Android和提供后端服务的服务器生成可靠的客户端库。客户端可以利用先进的流媒体和连接功能,这有助于节省带宽,在更少的TCP连接上做更多的事情,节省CPU使用和电池寿命。

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

这在很大程度上就是gRPC正在进行的工作。然而,gRPC也是一组库,它将提供跨平台一致的高级特性,而普通HTTP库通常不会提供这些特性。这些特征的例子包括:

    - 与应用层的流控制交互

    - 级联call-cancellation

    - 负载平衡和故障转移

为什么gRPC比REST好/坏?

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

gRPC怎么读?

Jee-Arr-Pee-See.

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容