原文链接:
概要
- Q&A
- 多目录多文件编译
- Goland配置支持proto
Q&A
- 如何安装protobuf 以及相应的依赖
protoc 是protobuf提供的命令行工具
brew install protobuf
go install google.golang.org/protobuf/cmd/protoc-gen-go
go get github.com/gogo/protobuf/protoc-gen-gogofaster
gogofast 可以减少指针的使用,减少垃圾回收的时间
Fields without pointers cause less time in the garbage collector. More code generation results in more convenient methods.
- grpc和protobuf是什么关系,如何配合使用
protobuf 是协议定义的是结构体,方便不同语言之间的参数转换。
grpc是网络通信框架,可以用json、thrift、protobuf作为结构体
go get -u google.golang.org/grpc
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc
如何编译protobuf后面说。
多目录多文件编译
多目录结构:
有多个微服务,用户中心/文章中心/审核中心 不同的团队服务通过grpc接口提供基础数据访问。这时候都是直接下发protobuf文件来方便传递数据
拆分多个目录,多个包相对来说就比较好维护protobuf文件。万一对方改了多个proto文件,直接丢给我们一个目录。我们也直接将目录覆盖
message 需要关联article的信息。同时还需要关联user包中的author。
到这需要先弄明白protobuf是如何import其他文件的。
- protobuf支持相同目录下的文件直接import
artitle和message是在同一个包下面的,可以直接import即可。
- 如果是多个目录,需要指定相对的根路径
--proto_path 指定根路径
推荐直接以项目路径作为根路径的:
此时的import就都是绝对路径,这是就不能即有相对路径,又有绝对路径了,否则会报错:
多目录,多文件如何编译
推荐设置根目录,以绝对路径import文件。protoc编译如何写?
但对对某个目录下的proto文件进行编译:
编译后:
Goland配置支持protobuf
需要安装插件: Protocol Buffers Editor
配置:Preferences > Languages & Frameworks >Protocol Buffers
取消: Configure automatically
添加:根目录所在目录