gRPC -- 一个 RPC 库和框架
gRPC 是一个现代的、开源的、高性能的远程过程调用(RPC)框架,可以在任何地方运行。gRPC 使客户端和服务器应用程序透明地通信,并简化了连接系统的构建。
主页: | grpc.io |
邮件列表: | grpc-io@googlegroups.com |
gRPC 是一种可以在任何环境中运行的现代开源高性能RPC框架。 它可以有效地连接数据中心内部的数据中心和可扩展支持的负载平衡,跟踪,健康检查和身份验证。 它也适用于最后一英里的分布式计算,将设备,移动应用程序和浏览器连接到后端服务。
主要使用场景:
- 在微服务风格的架构中有效地连接多业务服务
- 将移动设备,浏览器客户端连接到后端服务
- 生成高效的客户端库
核心功能让它棒极了:
- 12 种语言的惯用客户端库。包括 C++, Java, Objective-C, Python, Ruby, Go, C#, Node.js, C, PHP, Dart, Kotlin, WebJS。
- 高效的线上和简单的服务定义框架
- 基于 HTTP/2 的双向流传输
- 可插拔的验证,跟踪,负载平衡和健康检查
开始使用 gRPC
为了最大限度地提高可用性,gRPC 支持在用户选择的语言(如果有的话)中添加依赖关系的标准方法。在大多数语言中,gRPC 运行时作为一个包出现在用户的语言包管理器中。
关于如何在项目中使用特定语言的 gRPC 运行时的说明,请参考这些文档:
- C++:按照
src/cpp
目录下的说明进行操作。 - C#:NuGet package
Grpc
- Dart:pub package
grpc
- Go:
go get google.golang.org/grpc
- Java:使用 Maven Central Repository 的 JARs
- Kotlin:使用 Maven Central Repository 的 JARs
- Node:
npm install grpc
- Objective-C:在 podspec 中添加
gRPC-ProtoRPC
依赖关系。 - PHP:
pecl install grpc
- Python:
pip install grpcio
- Ruby:
gem install grpc
- WebJS:follow the grpc-web instructions
每种语言的快速入门指南和教程可以在 grpc.io 网站的文档部分找到。代码示例可以在 examples 目录中找到。
gRPC主分支的HEAD的预编译出血性包构建每天都会上传到 packages.grpc.io。
开始开发 gRPC
欢迎大家的贡献
请阅读 "如何贡献",它将指导你完成整个工作流程,包括如何构建源代码,如何运行测试,以及如何对gRPC代码库进行修改。"如何贡献" 文档中还包含了关于贡献过程如何工作的信息,以及创建贡献的最佳实践。
疑难解答
有时会出现问题。如果您在使用 gRPC 时遇到问题,请查看 故障排除指南。
性能问题
查看 性能仪表板,了解主分支每日构建的性能数据。
概念
参见 gRPC 概念
关于本存储库
这个资源库包含了在共享的 C 核心库 src/core 上用多种语言实现的 gRPC 库的源代码。
不同语言的库可能处于不同的开发状态。我们正在为所有这些库寻求贡献。
语言 | 源代码 |
---|---|
Shared C [core library] | src/core |
C++ | src/cpp |
Ruby | src/ruby |
Python | src/python |
PHP | src/php |
C# (core library based) | src/csharp |
Objective-C | src/objective-c |
语言 | 源代码 repo |
---|---|
Java | grpc-java |
Kotlin | grpc-kotlin |
Go | grpc-go |
NodeJS | grpc-node |
WebJS | grpc-web |
Dart | grpc-dart |
.NET (pure C# impl.) | grpc-dotnet |
(The second edition revised by vz on 2020.12.26)