gRPC(一)gRPC介绍

举报
张俭 发表于 2023/12/29 17:51:33 2023/12/29
【摘要】 本文代码地址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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。