序列化机制

原理

基于内存,通过IO流的方式,把对象转换为字节,然后通过tcp协议在网络中传输对象。

序列化和反序列化的概念

把对象转化为字节序列的过程称之为对象的序列化

反之,称之为反序列化

好的序列化协议有什么用?

恰当的序列化协议不仅可以提高系统的通用性、强壮型、安全性、优化性能。同时还能让系统更加易于调试和扩展。

比如dubbo协议天然的支持海量高并发,其本质就是 基于hessian作为序列化协议,单一长连接,NIO异步通信

主流的序列化技术有哪些

JSON / Hessian(2) / xml / protobuf / kryo / MsgPack / FST / thrift / protostuff / Avro

序列化协议对比

协议优点缺点场景
Hessian默认支持跨语言较慢适用于文件传输
Protostuff速度快,基于protobuf,字节数少,性能高静态编译原用于谷歌内部使用
Kryo速度快、序列化后体积小跨语言复杂 
Java使用方便,可序列化所有类、不能跨语言对接速度慢、占空间、传输效率低 

通信协议 与 序列化协议 对照

协议名底层序列化协议
dubbo

Hessian2

rmijava二进制序列化
httpjson序列化
webservicesoap文本序列化协议

hessian

hessian序列化协议

Spring框架 默认的序列化 采用 jackson

序列化发展历史

Java序列化存在很多问题,以至于在后来的很长一段时间,基于XML格式编码的对象序列化机制成为了主流,一方面解决了多语言兼容问题,另一方面比二进制的序列化方式更容易理解。以至于基于XML的SOAP协议及对应的WebService框架在很长一段时间内成为各个主流开发语言的必备的技术。再到后来,基于JSON的简单文本格式编码的HTTP REST接口又基本上取代了复杂的Web Service接口,成为分布式架构中远程通信的首要选择。但是JSON序列化存储占用的空间大、性能低等问题,同时移动客户端应用需要更高效的传输数据来提升用户体验。在这种情况下与语言无关并且高效的二进制编码协议就成为了大家追求的热点技术之一。首先诞生的一个开源的二进制序列化框架-MessagePack。它比google的Protocol Buffers出现得还要早。

-------------此段来源于网络

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值