Protocol buffers介绍及与golang结合使用

定义

Protocol buffers是一个灵活、高效、自动化地序列化结构化数据的方案。类似于XML,但是更快、更小和更灵活。你只需要定义一次数据的结构,就可以使用多种语言从多种数据流中读取结构化数据,并进行操作。而且可以很方便的变更数据的结构,而且不影响基于变更前的数据结构的程序。
在golang中,protocol buffers可以基于不同的传输协议进行传输,如HTTP/2和AMQP(Advanced Message Queuing Protocol)。
Protocol buffers是一个类似JSON的传输格式,但是是强类型的、只能被服务器端和客户端理解,人是无法阅读的。即以二进制的方式进行传输,

优势

Protocal buffers和JSON或XML在序列化结构化数据方面进行对比,具有如下的优势:

  • 它是强类型的;
  • 它的体积更小;
  • 在序列化和反序列化时,速度更快;
  • 由于具有类型和序号,它更加清晰,不容易混淆;
  • 它会产生数据访问的类,对编程更加友好;

使用

编译

protoc编译器会自动的基于.proto文件生成Go的结构体。这些结构体后期就会被导入到项目中进行业务处理,参与到序列化、反序列化的过程中。

安装编译器

安装编译器的方式根据操作系统的不同而不同,具体可参考:

github网址
具体到mac上,只要使用如下命令即可:

brew install protobuf

注意
在我们安装完成后,实际上是无法从.proto文件生成golang文件的,它会显示如下错误信息:
编译错误
这个错误实际上是在提示我们我们还没有安装能产生golang文件文件的插件,因为在安装protobuf,它只是安装如下的语言插件:
Protocol buffers介绍及与golang结合使用_第1张图片
下面我们就来解决这个问题,即安装golang的插件:

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

编译器的插件protoc-gen-go会安装到 G O P A T H / b i n 目 录 下 , 除 非 我 们 设 置 了 GOPATH/bin目录下,除非我们设置了 GOPATH/bin

你可能感兴趣的:(golang,protobuf)