go grpc 初步体验

以前在生产做过 java 版本 grpc 应用,服务器是用java 版本,也开发了java-client sdk 版本,主要是使用protobuffer 双向stream
后面本来打算作golang 版本和nodejs版本,由于精力和时间,就没有深入推进了,最近在用golang 作相关开发,作为技术预研,就研究了以下go-grpc。
protobuffer 生成代码最大问题是环境的,pb 依赖库都是google内部库,尤其在fq 不成功,域名解析失败的时候,使用
go get -u -vcode.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 下面有 protocprotoc-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 grpc 初步体验】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日志库集合整理

    推荐阅读