gRPC使用

golang  

gRPC使用

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


评论 0

发表评论

Top