消息队列_10( 序列化与反序列化:如何通过网络传输结构化的数据)

本文探讨如何通过网络传输结构化的数据,重点在于序列化和反序列化的实现。讨论了Java内置序列化、JSON、XML、Protobuf、Kryo和Hessian等序列化实现,强调在性能、易读性和信息密度间的权衡。并介绍了消息队列中对高性能序列化的需求,以及专用序列化方法的优势和挑战。最后,解答了为何需要序列化和反序列化的问题。
摘要由CSDN通过智能技术生成

序列化与反序列化:如何通过网络传输结构化的数据

网络传输的数据是结构化的数据,这些数据对应在代码中就可以用一个类(Class)或者一个结构体(Struct)来表示。
使用网络框架的API来传输结构化的数据,必须得先实现结构化的数据与字节流之间的双向转换。
结构化数据 ——> 字节流 == 序列化,反之为反序列化。
序列化用途:

  1. 网络上的传输数据
  2. 将结构化的数据保存在文件中

海量数据的场景中,需要将对象序列化后把它们暂时从内存转移到磁盘中,等需要用的时候,再把数据从磁盘中读取出来,反序列化成对象使用。便于长期保存且节省内存空间。

1. 该选择哪种序列化实现

java语言内置了序列化实现,流行的开源序列化实现:Google的Protobuf、Kryo、Hessian等;
像JSON、XML这些标准的数据格式,也可以作为一种序列化实现来使用。
也可以自己来实现私有的序列化。

选择序列化实现的几个因素:

  1. 序列化后的数据最好是易于人类阅读的;
  2. 实现的复杂度是否足够低
  3. 序列化和反序列化的速度越快越好
  4. 序列化后的信息密度越大越好,也就是说,同样的一个结构化数据,序列化之后占用的存储空间越小越好

JSON、XML这些序列化方法,可读性最好,但密度性也很低。
Kryo、Hessian这些通用的二进制序列化实现,使用范围广,使用简单,性能比JSON、XML要好一些,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值