
想通讯?谈钱多俗,谈ProtoBuf 原创
春节不停更,此文正在参加「星光计划-春节更帖活动」
大家好,我是怀瑾握瑜,一只大数据萌新,家有两只吞金兽,嘉与嘉,上能code下能teach的全能奶爸
如果您喜欢我的文章,可以[关注⭐]+[点赞👍]+[评论📃],您的三连是我前进的动力,期待与您共同成长~
什么是ProtoBuf
protocol buffers 是一种语言无关、平台无关、可扩展的序列化结构数据的方法,它可用于(数据)通信协议、数据存储等。
protobuf对于结构中的每个成员会提供set系列函数和get系列函数。与XML相比,protoBuf更小更快更简单。你可以用定义protobuf的数据结构。用protobuf编译器生成特定语言的源代码,如C++,Java,Python等。
ProtoBuf的优点:
-
平台无关、语言无关
-
二进制、数据字描述
-
提供了完整详细的操作API
-
高性能比XML要快20-100倍
-
尺寸小比XML要小3-10倍高可扩展性
-
数据字描述前后兼容
ProtoBuf的缺点:
- 语言覆盖度低,官方支持java、c++、python语言环境
- 自定义protobuf的工作量偏大
为什么是ProtoBuf
ProtoBuf使用的最佳场景,就是制定协议。
只要只官方支持的语言环境,只需要制定一套协议,大家可以各自生成自己的解析工具,接收到协议后进行解析。
协议也是支持变更的,在一定情况下,也不会影响低版本的协议解析,所以一方针对某些场景进行升级时,不用通知所有的终端,只需要相应有依赖的终端进行升级即可。
ProtoBuf的数据是用二进制存储的,本身相比json或者xml数据存储就小,如果再加上压缩,那会更加降低带宽。
如何使用ProtoBuf
在pom中配置相关jar包
在build中添加配置
将需要编译的proto文件放入/src/main/proto目录下
使用命令或者使用idea的Plugins工具进行编译
结束语
如果您喜欢我的文章,可以[关注⭐]+[点赞👍]+[评论📃],您的三连是我前进的动力,期待与您共同成长~
