您的位置:首页 > 理论基础 > 计算机网络

go-gRPC(基于http/2-数据传输是protobuf)的使用

u013755520 2019-06-12 17:57 70 查看 https://blog.csdn.net/u0137555

Go RPC可以利用tcp或http来传递数据,可以对要传递的数据使用多种类型的编解码方式;具体关于rpc的知识参考我的:

如果对rpc连接载体不清楚的话看这里:

https://blog.csdn.net/u013755520/article/details/91369196

rpc是一个协议,这个协议是基于连接的,在连接上绑定的方法,在哪些连接上绑定,是需要确定的,这就是载体。

如mysql协议-基于连接的协议-她的连接载体是 tcp的基于所有ip的3306端口。

go语言中自带的rpc包,是基于tcp的载体,数据传输格式是gob,go自带的jsonrpc是基于http的,数据传输是json格式。

而gRPC的载体是http/2,数据格式是protobuf.

rest的载体是http1,数据传输格式多种:如json.

使用grpc的步骤:

1.写通信的xx.proto文件:参考:https://blog.csdn.net/u013755520/article/details/91580273

2.编译xx.proto文件 
protoc --go_out=plugins=grpc:./ *.proto #添加grpc插件

3.写 server 端

4.写client端   3/4如下

[code]syntax = "proto3";
package my_grpc_proto;

service HelloServer{
rpc SayHello(HelloRequest)returns(HelloResponse){}
}

message HelloRequest{
string name = 1;
}
message HelloResponse{
string message = 1;
}

由以上可以看到:server端,1.只需要开启http服务,2.然后制造一个grpc的server对象,3.然后pb.go有绑定方法,把grpc的server绑定在pb.go的server上,4.然后grpc大包的register把grpc的sever注册上。5.再让grpc的server服务于http的lis-socke就可以了。

client端:1.使用grpc直接连接对应的地址,返回一个grpc连接,2.然后根据pb.go创建客户端桩,3.然后就可以直接服务-即方法-调用了。

因为是基于protobuf格式的传输,所以,server端和client端在创建了grpc对象后,还要把protobuf的server和对象关联。才能使用。

标签: