gRPC(一)gRPC介绍
2022-07-09 本文已影响0人
ShootHzj
本文代码地址
https://gitee.com/shoothzj/grpc-examples
什么是gRPC
gRPC是基于http2实现的一种多语言RPC协议。主要特性有:
- 基于HTTP2,支持多路复用。
- 使用protobuf编码,编码效率高
- 支持10多种语言,如Python、Java、C#、nodejs、C、C++、php、go
gRPC实现细节
gRPC有三个完整实现:C/C++、Java、Go。其他语言底层都是warp C库来实现的。wrap C库的原因主要是出于开发成本、性能的考虑。
个人觉得开发成本非常重要,像pulsar、rocketmq的nodejs客户端,其实也是wrap C库实现的
gRPC定义
定义结构体
gRPC使用.proto
文件进行消息格式的定义,我们定义示例如下,这是一个简单的Echo程序,即接收的收入再原封不动地返回回去
syntax = "proto2";
package proto;
enum Comic {
Bleach = 1;
Naruto = 2;
OnePiece = 3;
}
message EchoProto2Req {
required string str_req = 1;
optional string str_opt = 2;
repeated string str_rep = 3;
required int64 int64_req = 4;
optional int32 int32_opt = 5;
required Comic comic = 6;
}
message EchoProto2Resp {
required string str_req = 1;
optional string str_opt = 2;
repeated string str_rep = 3;
required int64 int64_req = 4;
optional int32 int32_opt = 5;
required Comic comic = 6;
}
定义service
service EchoProto2Service {
rpc EchoProto2(EchoProto2Req) returns (EchoProto2Resp);
}