go grpc 初步体验

       以前在生产做过 java 版本 grpc 应用,服务器是用java 版本,也开发了java-client sdk 版本,主要是使用protobuffer 双向stream

后面本来打算作golang 版本和nodejs版本,由于精力和时间,就没有深入推进了,最近在用golang 作相关开发,作为技术预研,就研究了以下go-grpc。

     protobuffer 生成代码最大问题是环境的,pb 依赖库都是google内部库,尤其在fq 不成功,域名解析失败的时候,使用

go get -u -v  code.repository 无法成功下载代码,所以需要手动下载所有相关环境到gopath 所在 google.golang.org/golang.org 环境中,配置项目需要库包。

下载protobuf 依赖包

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

下载protoc 执行文件(本机是unbuntu 64机)

   https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protoc-3.6.1-linux-x86_64.zip

  解压之后mv 到 goroot/bin 下面,加入到执行环境里面

  goroot 下面有 protoc  protoc-gen-go

 由于grpc 依赖

 fq 不可用:

git clone https://github.com/grpc/grpc-go  然后拷贝到  $GOPATH/src/google.golang.org/grpc

git clone https://github.com/google/go-genproto  然后拷贝到  $GOPATH/src/google.golang.org/genproto

git clone https://github.com/golang/net.git  然后拷贝到  $GOPATH/src/golang.org/x/net

或者 fq 可用

  go get -u google.golang.org/grpc

 go get -u golang.org/x/net

其他缺少依赖,基本上都是按照上面思路,继续添加,直到没有缺包为止。

 

前面准备环境差不多了,后面定义 *.proto,并且生成  *.pb.go 文件。撰写ptoto 比较简单,参与规范就可以。

protoc --go_out=plugins=grpc:. *.proto   生成 *.pb.go

 

第三部分,搭建一个 client 和server 来加载我们 pb.go。

实例参考官方: https://github.com/grpc/grpc-go/tree/master/examples

后记:其实 go-grpc 相对来比较简洁和简单。

下一篇文章: Go日志库集合整理

你可能感兴趣的:(golang)