想通讯?谈钱多俗,谈 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 工具进行编译
结束语
如果您喜欢我的文章,可以[关注⭐]+[点赞👍]+[评论📃],您的三连是我前进的动力,期待与您共同成长~
版权声明: 本文为 InfoQ 作者【怀瑾握瑜的嘉与嘉】的原创文章。
原文链接:【http://xie.infoq.cn/article/92066cde961ce2d2ceaec446d】。文章转载请联系作者。
评论