go语言快速使用gRPC

· · 656 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

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

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

656 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传