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())
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值