Mac下安装配置Protocol Buffers
1、概述
1.1 Protocol buffers定义
Protocol buffers 是语言中立、平台中立、可扩展的结构化数据序列化机制,就像 XML,但是它更小、更快、更简单。你只需定义一次数据的结构化方式,然后就可以使用特殊生成的源代码轻松地将结构化数据写入和读取各种数据流,支持各种语言。因为profobuf是二进制数据格式,需要编码和解码。数据本身不具有可读性。因此只能反序列化之后得到真正可读的数据。
1.2 Protocol buffers和其他主流数据传输方式比较
在分布式应用或者微服务架构中,各个服务之间通常使用json
或者xml
结构数据进行通信,通常情况下,是没什么问题的,但是在高性能和大数据通信的系统当中,如果有办法可以压缩数据量,提高传输效率,显然会给用户带来更快更流畅的体验。
现在主流的数据传输方式有如下三种:
- JSON
- XML
- Protocol Buffers
存在即是合理,Protocol Buffers为什么会出现呢?回答即是性能。一条消息数据,用protobuf序列化后的大小是json的10分之一,是xml格式的20分之一,但是性能却是它们的5~100倍。
2、Mac下安装配置Protobuf
1)github下载对应系统指定版本二进制文件
wget https://github.com/protocolbuffers/protobuf/releases/download/v3.15.0/protoc-3.15.0-osx-x86_64.zip
2)解压二进制文件文件并将protoc二进制文件拷贝到/usr/local/bin目录下
unzip protoc-3.15.0-osx-x86_64.zip cp protoc-3.15.0-osx-x86_64/bin/protoc /usr/local/bin/
3)安装好之后,查看是否安装成功
*** Desktop$ protoc --version libprotoc 3.15.0
4)安装go protocol buffers 插件
因为protoc没有内置go生成器,想实现.proto->.go的转换的话还需要安装protobuf的golang编译器插件protoc-gen-go,用于生成go文件
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
安装后会在GOBIN目录下生成可执行文件,执行protoc
命令会自动调用protobuf的编译器插件protoc-gen-go
插件。
注意事项:
- 这里有个小坑,github.com/golang/protobuf/protoc-gen-go和google.golang.org/protobuf/cmd/protoc-gen-go是不同的,区别在于前者是旧版本,后者是google接管后的新版本,他们之间的API是不同的,也就是说用于生成的命令,以及生成的文件都是不一样的。为了与时俱进建议使用google.golang.org/protobuf/cmd/protoc-gen-go。
- 我本地golang版本为1.17.x,所以都用go install命令进行二进制包的安装,go 1.15以前使用go get命令获取第三包。
3、Goland中配置protobuf插件
1)安装protocol插件
2)这时候Goland就可以解析proto语法了
至此,本地就安装好了Protocol Buffers及Protocol Buffers的golang插件,后面在golang项目中就可以使用Protocol Buffers进行数据传输了。