常见问题解答
这里是一些常见问题,希望您能在这里找到答案 :-)
什么是 gRPC?
gRPC 是一个现代的、开源的远程过程调用(RPC)框架,能够在任何地方运行。它使客户端和服务器应用程序能够透明地进行通信,并且简化了构建连接系统的过程。
要了解更多背景信息,请阅读更长的 动机与设计原则 文章。
为什么我要使用 gRPC?
主要的使用场景包括:
-
低延迟、高可扩展的分布式系统。
-
开发与云服务器通信的移动客户端。
-
设计需要准确、高效且语言独立的新协议。
-
分层设计以支持扩展,如认证、负载均衡、日志记录和监控等。
谁在使用 gRPC,为什么?
gRPC 是一个 云原生计算基金会(CNCF)项目。
Google 长期以来一直在使用 gRPC 底层的许多技术和概念。当前的实现被用于多个 Google 云产品和对外的 Google API。https://corner.squareup.com/2015/02/grpc.html[Square]、https://github.com/Netflix/ribbon[Netflix]、https://blog.gopheracademy.com/advent-2015/etcd-distributed-key-value-store-with-grpc-http2/[CoreOS]、https://blog.docker.com/2015/12/containerd-daemon-to-control-runc/[Docker]、https://github.com/cockroachdb/cockroach[CockroachDB]、https://github.com/CiscoDevNet/grpc-getting-started[Cisco]、https://github.com/Juniper/open-nti[Juniper Networks] 等许多组织和个人也在使用。
gRPC 支持哪些编程语言?
有关官方支持的语言和平台,请参阅 官方支持 。
如何开始使用 gRPC?
您可以按照 此处 的说明安装 gRPC。或者访问 gRPC GitHub 组织页面,选择您感兴趣的运行时或语言,并按照 README 文件中的说明进行操作。
文档在哪里?
请访问 gRPC 官方网站 grpc.io。
gRPC 的路线图是什么?
gRPC 项目有一个 RFC 过程,通过该过程设计和批准新特性。相关内容会在此 存储库 中进行跟踪。
gRPC 的版本管理政策是什么?
请参见 gRPC 版本管理政策。
gRPC 发布频率如何?
gRPC 项目采用的模型是,master 分支的代码始终保持稳定。该项目(跨各种运行时)计划每 6 周发布一次检查点版本,尽力而为。具体的发布计划请查看 发布日程。
如何报告 gRPC 的安全漏洞?
要报告 gRPC 的安全漏洞,请按照 此处的流程 进行操作。
可以使用我喜欢的数据格式(JSON、Protobuf、Thrift、XML)吗?
可以。gRPC 设计为可扩展以支持多种内容类型。初始版本支持 Protobuf,同时也支持如 FlatBuffers 和 Thrift 等其他内容类型的外部支持,具体成熟度各异。
可以在服务网格中使用 gRPC 吗?
可以。gRPC 应用程序可以像其他应用程序一样部署在服务网格中。gRPC 还支持 xDS API,使得 gRPC 应用程序可以在没有 sidecar 代理的情况下部署在服务网格中。gRPC 支持的无代理服务网格特性列在 这里。
gRPC 如何帮助移动应用开发?
gRPC 和 Protobuf 提供了一种简单的方法来精确地定义服务,并自动生成可靠的客户端库,适用于 iOS、Android 和提供后端的服务器。客户端可以利用高级流式和连接功能,帮助节省带宽、通过更少的 TCP 连接做更多事情,并节省 CPU 使用和电池寿命。
为什么 gRPC 比 HTTP/2 上的二进制数据更好?
这基本上就是 gRPC 在网络中的表现。然而,gRPC 还是一套库,能够在各个平台之间提供更一致的高层功能,而普通的 HTTP 库通常没有这些功能。例如,gRPC 包含:
-
与应用层流控的交互
-
级联调用取消
-
负载均衡与故障转移