• GRPC的配置,基于Golang的快速入门


    参考文档:https://www.grpc.io/docs/languages/go/quickstart/

    环境配置

    一、安装protobuf编译器

    https://github.com/protocolbuffers/protobuf/releases 这个网址中根据自己的操作系统下载对应的protobuf编译器

    二、安装grpc包

    go get -u google.golang.org/grpc
    

    三、安装protoc转go的插件

    进入$GOPATH/src/google.golang.org/grpc/cmd/protoc-gen-go-grpc目录下,运行下面的命令生成protoc-gen-go-grpc.exe可执行文件

    go build
    go install
    

    进入$GOPATH/src/google.golang.org/protobuf/cmd/protoc-gen-go目录下,运行下面的命令生成protoc-gen-go.exe可执行文件

    go build
    go install
    

    GRPC测试

    一、编写add.proto文件

    syntax = "proto3";
    
    package my_add;
    option go_package = ".;add";
    
    service AddService {
      rpc addInt(AddRequest) returns (AddIntReply) {}
    }
    
    message AddRequest {
      int32 a = 1;
      int32 b = 2;
    }
    
    message AddIntReply {
      int32 res = 1;
    }
    

    二、进入add.proto文件所在的位置,输入如下命令

    protoc.exe --go_out=. --go-grpc_out=. add.proto
    

    这时会在同级目录下生成add.pb.goadd_grpc.pb.go文件。

    三、新建service文件夹,编写服务端程序并运行

    package main
    
    import (
       "context"
       "fmt"
       "getcharzp.cn/test/grpc-test/my-add" // 这个包即就是add.bp.go文件所在的包
       "google.golang.org/grpc"
       "net"
    )
    
    type MyService struct {
       myAdd.UnimplementedAddServiceServer
    }
    
    func (s *MyService) AddInt(ctx context.Context, req *myAdd.AddRequest) (*myAdd.AddIntReply, error){
       res := add(req.GetA(), req.GetB())
       return &myAdd.AddIntReply{Res:res}, nil
    }
    
    func add(a, b int32) int32 {
       return a + b
    }
    
    func main()  {
       fmt.Println("the server run at 9999 ...")
       s,_:= net.Listen("tcp", ":9999")
       myService := MyService{}
       grpcServer := grpc.NewServer()
       myAdd.RegisterAddServiceServer(grpcServer, &myService)
       _ = grpcServer.Serve(s)
    }
    

    四、新建client文件夹,编写客户端程序并运行,这时的客户端就是通过RPC的方式对服务端的方法进行的调用

    package main
    
    import (
       "context"
       "fmt"
       "getcharzp.cn/test/grpc-test/my-add" // 这个包即就是add.bp.go文件所在的包
       "google.golang.org/grpc"
       "log"
    )
    
    func main() {
       conn,_ := grpc.Dial("127.0.0.1:9999", grpc.WithInsecure())
    
       c := myAdd.NewAddServiceClient(conn)
       req := myAdd.AddRequest{
          A: 99,
          B: 98,
       }
       reply, err := c.AddInt(context.Background(), &req)
       if err != nil {
          log.Println(err)
       }
       fmt.Println(reply.GetRes())
    }
    
  • 相关阅读:
    django---url---03
    django---url---02
    django--url---路由分配3种情况
    pycharm导入.py文件报错
    django 常见环境问题
    python+appium+unittest 启动一次app,执行多条test
    查找夜神模拟器app的安装包
    Android_smali_代码注入
    vue uuid的使用
    vue_elementui_tab刷新保持当前状态
  • 原文地址:https://www.cnblogs.com/GetcharZp/p/15877205.html
Copyright © 2020-2023  润新知