• 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())
    }
    
  • 相关阅读:
    杂货铺
    oracle修改已存在数据的字段类型
    使用python读取配置文件并从mysql数据库中获取数据进行传参(基于Httprunner)
    HttpRunner完整笔记(从搭建到应用)
    使用jmeter发送put请求的三种方式
    电脑同时安装了python2和python3后,随意切换版本并使用pip安装
    python+request+HTMLTestRunner+unittest接口自动化测试框架
    redis简介
    spring cloud gateway之服务注册与发现
    spring cloud gateway 之限流篇
  • 原文地址:https://www.cnblogs.com/GetcharZp/p/15877205.html
Copyright © 2020-2023  润新知