1. 引入
6.14晚和leader谈话的时候他提到RPC技术 并举例子提到了三种序列化的技术
项目组综合衡量了三种序列化的方式之后选择了pb的方式 相交于更灵活和易于理解的xml json格式 项目更看重pb的效率
在之前的学习和工作时接触到过xml和json格式 是web项目中最常用的两种序列化方式
- json作为前后端数据传输的数据格式 或者中间信息保存时 之前学redis的时候session数据可视化的结构是json
- xml作为配置文件结合DOM技术和反射技术来构建框架
- 但是pb不很了解
2. 参考资料
(19条消息) ProtoBuf的介绍以及在Java中使用protobuf将对象进行序列化与反序列化_霸道流氓气质的博客-CSDN博客_java protobuf序列化和反序列化
一文搞懂XML、Json、Protobuf序列化协议_路上的追梦人的博客-CSDN博客_序列化协议
3.技术简介
用套接字在网络中传输数据时应该是语言无关性的 当然没办法传输一个对象 无论是java语言还是C语言编写的对象
(除了网络数据传输 还有将数据保存在数据库或者文件中时 需要进行序列化 )
因此需要借助序列化协议
- 序列化:将对象转换为字节序列的过程称为对象的序列化;
- 反序列化:将字节序列恢复为对象的过程称为对象的反序列化;
4.序列化结果对比
5. 三类方法对比
xml :
优点
(1)文本结构存储;
缺点
(1)xml格式存储的数据比其它的占用更多的空间,因为它除了保存原始数据,还需要保存元数据的描述;
(2)格式转换问题,比如给定一个doc做数据交互,需要先确定doc怎么编码,才可以用xml描述并还原;
优点
(1)二进制结构存储,效率高,序列化体积比Json和xml更小、更加灵活;
(2)格式规范,支持RPC;
(3)易于使用,开发人员可以按照一定的语法定义结构化的消息格式,然后送给命令行工具,工具将自动生成相关的类,可以支持JAVA、C++、Go等语言环境。通过这类类包含在项目当中,可以很轻松的调用相关方法来完成业务消息的序列化与反序列工作
缺点
(1)可读性不高;
ProtocolBuffer拥有多项比XML更高级的串行化结构数据的特性,ProtocolBuffer:
· 更简单
· 小3-10倍
· 快20-100倍
· 更少的歧义
· 可以方便的生成数据存取类