gRPC是可以在任何环境中运行的现代开源高性能RPC框架,它可以通过可插拔的支持来有效地连接数据中心内和跨数据中心的服务,以实现负载平衡,跟踪,运行状况检查和身份验证,它也适用于分布式计算的最后一英里,以将设备,移动应用程序和浏览器连接到后端服务。
软件特色
简单的服务定义
使用协议缓冲区,功能强大的二进制序列化工具集和语言来定义服务
快速启动并扩展
只需一行即可安装运行时和开发环境,并使用该框架每秒可扩展至数百万个RPC
跨语言和平台工作
自动以多种语言和平台为您的服务生成惯用的客户端和服务器存根
双向流和集成身份验证
双向流和完全集成的可插入身份验证以及基于HTTP/2的传输
gRPC是可以在任何环境中运行的现代开源高性能RPC框架。它可以通过可插拔的支持来有效地连接数据中心内和跨数据中心的服务,以实现负载平衡,跟踪,运行状况检查和身份验证。它也适用于分布式计算的最后一英里,以将设备,移动应用程序和浏览器连接到后端服务。
使用说明
开始使用gRPC
为了最大化可用性,gRPC支持将依赖项添加到用户选择的语言(如果有)的标准方法。在大多数语言中,gRPC运行时是作为软件包提供的,可以在用户的??语言包管理器中找到。
有关如何在项目中使用特定于语言的gRPC运行时的说明,请参阅以下文档
C++: follow the instructions under the src/cpp directory
C#: NuGet package Grpc
Dart: pub package grpc
Go: go get google.golang.org/grpc
Java: Use JARs from Maven Central Repository
Kotlin: Use JARs from Maven Central Repository
Node: npm install grpc
Objective-C: Add gRPC-ProtoRPC dependency to po dspec
PHP: pecl install grpc
Python: pip install grpcio
Ruby: gem install grpc
WebJS: follow the grpc-web instructions
使用协议缓冲区
默认情况下,gRPC使用 协议缓冲区,这是Google成熟的用于序列化结构化数据的开源机制(尽管它可以与其他数据格式(例如JSON)一起使用)。这里是它的工作原理的快速介绍。如果您已经熟悉协议缓冲区,请随时跳到下一部分。
使用协议缓冲区的第一步是为要在原始文件中序列化的数据定义结构:这是带有.proto扩展名的普通文本文件。协议缓冲区数据被构造为 消息,其中每个消息都是信息的小逻辑记录,其中包含一系列称为字段的名称/值对。这是一个简单的例子:
message Person { string name = 1; int32 id = 2; bool has_ponycopter = 3; }
然后,一旦指定了数据结构,就可以使用协议缓冲区编译器protoc从原型定义中以首选语言生成数据访问类。这些为每个字段(例如name()和)提供了简单的访问器set_name(),以及将整个结构序列化为原始字节或从原始字节中解析出整个结构的方法。因此,例如,如果您选择的语言是C ++,则在上面的示例中运行编译器将生成一个名为的类Person。然后,您可以在应用程序中使用此类来填充,序列化和检索Person协议缓冲区消息。
您可以在普通的原始文件中定义gRPC服务,并使用RPC方法参数和返回类型指定为协议缓冲区消息:
// The greeter service definition. service Greeter { // Sends a greeting rpc SayHello (HelloRequest) returns (HelloReply) {} } // The request message containing the user's name. message HelloRequest { string name = 1; } // The response message containing the greetings message HelloReply { string message = 1; }
gRPC protoc与特殊的gRPC插件一起使用,可从您的原型文件生成代码:您将生成生成的gRPC客户端和服务器代码,以及用于填充,序列化和检索消息类型的常规协议缓冲区代码。