以下是一些常见的问题。希望你能在这里找到答案。
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.