认识protobuf
认识protobuf
1、protobuf介绍
- Protocol Buffers ,是Google公司开发的一种数据传输格式,简称为protobuf;
- 与Json、xml类似,但是protobuf传输效率更高;
- protobuf常用于数据传输(常用于RPC调用)、存储;
- protobuf还可跨平台、跨语言;
- 文件命名后缀为xxx.proto;
2、protobuf语法
实际例子如下:
syntax = "proto3"; //指定使用proto的语法
message LoginRequest { //消息格式
repeated string name = 1; //修饰符 类型 变量名 = 数字标识符;
int32 password = 2;
}
- 数字标识符是用来在消息的二进制格式中识别各个字段的,一旦开始使用就不能够再改变
- 修饰符:
- repeat:字段可以重复任意多次,顺序会保留
- singular:字段应有0或1个
3、为什么使用protobuf传输数据
因为它比常用的通信数据格式json,xml效率高!!
目前我GET到原因有以下两点:(若还有其他原因,请在评论区补充以下~)
- json和xml文件中都有很多冗余的字符;如json有,、{、}等;而protobuf直接舍去这些冗余字符,并利用数字标识符来确定数据位置,去节省存储空间压缩数据
- protobuf可以根据实际需求去采用不同的长度存储数据,譬如int32,int64等
4、简单实践-通过java使用protobuf
1. 环境:MAC OS
2. 操作软件:IDEA 2020.2.3
a、首先,下载protobuf编译器
-
下载:https://github.com/protocolbuffers/protobuf/releases/
-
下载后解压,在解压后的工作目录下输入命令
./configure --prefix=/usr/local/protobuf
- 完成后,输入命令
make
- 编译完成后,输入命令
make install
- 检查是否安装成功,利用下面命令
protoc --version
若出现你所下载版本即安装成功
b、在idea中配置protobuf环境
- 下载插件
- 建立一个项目,创建一个存放proto文件的目录
- 配置编译.proto的规则
点击Tools->Configure GenProtobuf
配置如下:
c、具体实践
- 引入依赖
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>3.14.0</version>
</dependency>
-
在所创建的目录下新建.proto文件,基本格式如下:
-
右击此文件,选择quick gen protobuf here编译此文件
-
编译成功后,当前目录下会生成了.Java文件
-
测试
i. 创建实例
ii. 序列化
iii. 反序列化
-
运行结果如下图: