美文网首页
go语言快速使用gRPC

go语言快速使用gRPC

作者: SasukeBo | 来源:发表于2019-11-06 19:18 被阅读0次

sasuke.cn
gRPC官网文档学习笔记

快速开始

先决条件

gRPC需要1.6+版本的go。

安装gRPC

$ go get -u google.golang.org/grpc

安装Protocol Buffers v3

安装编译器protoc,用来生成gRPC服务代码。前往https://github.com/google/protobuf/releases下载适合你的电脑预编译二进制文件,文件名一般为protoc-<version>-<platform>.zip

  • 解压文件
  • 将protoc二进制文件路径加入到PATH环境变量

然后安装go版本的protoc插件。

$ go get -u github.com/golang/protobuf/protoc-gen-go

该插件的二进制路径也需要加入到PATH环境变量。

$ export PATH=$PATH:$GOPATH/bin

Examples

前面安装的google.golang.org/grpc包中就包含了许多例子。
尝试编译这个例子。

$ cd $GOPATH/src/google.golang.org/grpc/examples/helloworld/helloworld

gRPC服务定义文件一般为.proto文件,protoc 处理.proto文件会生成相应的.pb.go文件。
当前示例文件夹中已经通过编译helloworld.proto文件生成了helloworld.pb.go文件,该文件主要包含:

  • 生成的client和server代码
  • populating/serializing/retrieving HelloRequestHelloReply的代码。

运行

  • 服务端
$ cd $GOPATH/src/google.golang.org/grpc/examples/helloworld
$ go run greeter_server/main.go
  • 客户端
$ go run greeter_client/main.go
# => Greeting: Hello world

尝试修改

学习更多定义gRPC服务可以访问gRPC Basics: GO
现在只需要知道在刚刚的例子中,server和client的stub都有一个SayHello RPC方法,服务端接收client发送来的HelloRequest参数,
并返回HelloReply response给client。

service Greeter {
  rpc SayHello (HelloRequest) returns (HelloReply) {}
}

message HelloRequest {
  string name = 1;
}

message HelloReply {
  string message = 1;
}

现在给Greeter服务增加一个方法,如下:

service Greeter {
  rpc SayHello (HelloRequest) returns (HelloReply) {}
  rpc SayHelloAgain (HelloRequest) returns (HelloReply) {}
}

...

编译

$ protoc -I helloworld/ helloworld/helloword.proto -go_out=plugins=grpc:helloworld

更新服务端代码

// greeter_server/main.go
func (s *server) SayHelloAgain(ctx context.Context, in *pb.HelloRequest) (*pb.HelloReply, error) {
  return &pb.HelloReply{Message: "Hello again " + in.GetName()}, nil
}

更新客户端代码

// greeter_client/main.go
r, err = c.SayHelloAgain(ctx, &pb.HelloRequest{Name: name})
if err != nil {
  log.Fatalf("could not greet: %v", err)
}
log.Printf("Greeting: %s", r.GetMessage())

运行

重新启动服务端,运行客户端

下一步

学习更多go - gRPC:gRPC Basics: Go

相关文章

网友评论

      本文标题:go语言快速使用gRPC

      本文链接:https://www.haomeiwen.com/subject/rslpbctx.html