gRPC(一)gRPC介绍
【摘要】 本文代码地址https://gitee.com/shoothzj/grpc-examples 什么是gRPCgRPC是基于http2实现的一种多语言RPC协议。主要特性有:基于HTTP2,支持多路复用。使用protobuf编码,编码效率高支持10多种语言,如Python、Java、C#、nodejs、C、C++、php、go gRPC实现细节gRPC有三个完整实现:C/C++、Java、G...
本文代码地址
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);
}
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)