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文件
2.编译xx.proto文件 1/2步骤参考:https://blog.csdn.net/u013755520/article/details/91580273 具体文件如下
3.写 server 端
4.写client端 3/4如下
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和对象关联。才能使用。