gRPC是一款高性能开源RPC框架,软件基于 HTTP/2 标准设计,带来诸如双向流、流控、头部压缩、单 TCP 连接上的多复用请求等特。可以通过可插拔的支持来有效地连接数据中心内和跨数据中心的服务,以实现负载平衡,跟踪,运行状况检查和身份验证。KK下载站为您提供gRPC 官方最新版下载,有需要的朋友可以下载使用哦!
gRPC使用说明
开始使用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扩展名的普通文本文件。协议缓冲区数据被构造为 消息,其中每个消息都是信息的小逻辑记录,其中包含一系列称为字段的名称/值对。这是一个简单的例子:
messagePerson{stringname=1;int32id=2;boolhas_ponycopter=3;}
然后,一旦指定了数据结构,就可以使用协议缓冲区编译器protoc从原型定义中以首选语言生成数据访问类。这些为每个字段(例如name()和)提供了简单的访问器set_name(),以及将整个结构序列化为原始字节或从原始字节中解析出整个结构的方法。因此,例如,如果您选择的语言是C ++,则在上面的示例中运行编译器将生成一个名为的类Person。然后,您可以在应用程序中使用此类来填充,序列化和检索Person协议缓冲区消息。
您可以在普通的原始文件中定义gRPC服务,并使用RPC方法参数和返回类型指定为协议缓冲区消息:
//Thegreeterservicedefinition.serviceGreeter{//SendsagreetingrpcSayHello(HelloRequest)returns(HelloReply){}}//Therequestmessagecontainingtheuser'sname.messageHelloRequest{stringname=1;}//TheresponsemessagecontainingthegreetingsmessageHelloReply{stringmessage=1;}
gRPC protoc与特殊的gRPC插件一起使用,可从您的原型文件生成代码:您将生成生成的gRPC客户端和服务器代码,以及用于填充,序列化和检索消息类型的常规协议缓冲区代码。
gRPC功能介绍
简单的服务定义
使用协议缓冲区,功能强大的二进制序列化工具集和语言来定义服务
快速启动并扩展
只需一行即可安装运行时和开发环境,并使用该框架每秒可扩展至数百万个RPC
跨语言和平台工作
自动以多种语言和平台为您的服务生成惯用的客户端和服务器存根
双向流和集成身份验证
双向流和完全集成的可插入身份验证以及基于HTTP/2的传输
gRPC是可以在任何环境中运行的现代开源高性能RPC框架。它可以通过可插拔的支持来有效地连接数据中心内和跨数据中心的服务,以实现负载平衡,跟踪,运行状况检查和身份验证。它也适用于分布式计算的最后一英里,以将设备,移动应用程序和浏览器连接到后端服务。
gRPC软件特色
gRPC可以通过protobuf来定义接口,从而可以有更加严格的接口约束条件。关于protobuf可以参见笔者之前的小文Google Protobuf简明教程
另外,通过protobuf可以将数据序列化为二进制编码,这会大幅减少需要传输的数据量,从而大幅提高性能。
gRPC可以方便地支持流式通信(理论上通过http2.0就可以使用streaming模式, 但是通常web服务的restful api似乎很少这么用,通常的流式数据应用如视频流,一般都会使用专门的协议如HLS,RTMP等,这些就不是我们通常web服务了,而是有专门的服务器应用。)