gRPC使用
- Go
- 2020-11-09
- 104
- 0
gRPC使用
gRPC 使用一般分为三大步骤:
1.定义和编译proto文件;
2.客户端发送RPC请求;
3.服务端建立RPC服务;
- 使用protobuf进行grpc文件生成
- 什么是protobuf?
protobuf 是一种轻便高效的结构化数据存储格式,适用于数据存储或RPC数据交换.
它可用于通讯协议.数据存储等领域的语言无关.平台无关.可扩展的序列化结构数据格式.
- 语法文档
- 如何使用?
1.安装插件 go get github.com/golang/protobuf/protoc-gen-go
2.定义和编译xxx.proto文件
3.执行命令生成代码 在xxx.proto文件目录下 运行命令(protoc --go-grpc_out=. ./*)将生成 xxx_grpc.pb.go
- 根据proto文件生成的grpc文件中的接口,编写业务层对应的载体和实现
- 什么是protobuf?
- 构建服务端
var Address = "127.0.0.1:50052"
listen, err := net.Listen("tcp", Address)
if err != nil {
grpclog.Fatalf("Failed to listen: %v", err)
}
// 实例化 grpc Server
s := grpc.NewServer()
// 注册UserServiceImpl,这就是上面业务层对应的载体实例
pb.RegisterUserServiceServer(s, UserServiceImpl)
grpclog.Println("Listen on " + Address)
s.Serve(listen)
- 构建客户端使用
// 建立连接
conn, err := grpc.Dial(Address, grpc.WithInsecure())
if err != nil {
grpclog.Fatalln(err)
}
defer conn.Close()
// 初始化客户端
c := pb.NewUserServiceClient(conn)
// 调用方法
req := &pb.LoginRequest{Username: "小明", Password: "admin"}
res, err := c.CheckPassword(context.Background(), req)
if err != nil {
grpclog.Fatalln(err)
}
fmt.Println(res)