Protocol Buffers(protobuf)入门 | 青训营笔记

151 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第5篇笔记。

Protocol Buffers是什么?

Protocol Buffers,是Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可用于数据存储、通信协议等方面。
它不依赖于语言和平台并且可扩展性极强。现阶段官方支持C++JAVAPython、Objective C、C# 、Ruby、PHP、JavaScript八种编程语言,还可以找到大量的几乎涵盖所有语言的第三方拓展包。

通过它,你可以定义你的数据的结构,并生成基于各种语言的代码。这些你定义的数据流可以轻松地在传递并不破坏你已有的程序。并且你也可以更新这些数据而现有的程序也不会受到任何的影响。

Protocol Buffers经常被简称为protobuf。

为什么要使用protobuf(优势)?

Xml、Json是目前常用的数据交换格式,它们直接使用字段名称维护序列化后类实例中字段与数据之间的映射关系,一般用字符串的形式保存在序列化后的字节流中。消息和消息的定义相对独立,可读性较好。但序列化后的数据字节很大,序列化和反序列化的时间较长,数据传输效率不高。

Protobuf和Xml、Json序列化的方式不同,采用了二进制字节的序列化方式,用字段索引和字段类型通过算法计算得到字段之前的关系映射,从而达到更高的时间效率和空间效率,特别适合对数据大小和传输速率比较敏感的场合使用。

protobuf下载:

前往

Releases · protocolbuffers/protobuf (github.com) 选择合适的版本进行下载,解压到c盘,并且将bin文件夹下protoc.exe所在路径添加到添加到环境变量。
验证:
输入 protoc

image.png 出现以下内容代表环境配置成功。 接下来进入终端输入:

go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
安装依赖
创建proto文件,然后进行 protoc --go_out./go ./proto/* 即可将proto文件转化为go,效果如图:

image.png image.png