[序列化]MsgPack、Hessian对比

两者的区别:

hessian序列化的时候,会写入字段名称,然后字段值,你可以想象为一个map。
msgpack序列化的时候,不写入字段名字,会按字段顺序写入值,你可以想象为一个数组。

对比

  • hessian产生的数据包较大,msgpack产生的数据包较小。网络传输数据更小。
  • 序列化中hessian的性能较差,(相当于每次map按名字取值)
  • msgpack性能更佳,(相当于数组取值)
  • 压测结果不同场景显示提高10% - 30%。(从数组取值比map高效)
  • hessian的扩展性更好,上下兼容时,可以随意添加字段位置(相当于map可以随便赋值)
  • msgpack的性能更佳,上下兼容时,需要保证字段顺序(包括枚举顺序)。

注意点

  • hessian对Map/List等集合支持就是全变成最普通的Hashmap或者ArrayList,一些指定的类型会丢失(例如LinkedHashMap–>HashMap),但是支持一些匿名的Map/List等集合类;
    而msgpack会保留集合类的类型(例如LinkedHashMap),但是不支持一些匿名集合类(例如List.subList(),Map.keySet(),Collections.emptyList(),Guava的匿名集合类,数据库查询结果直接返回的list)
  • 如果需要支持字段顺序不一样的情况下调用:请使用hessian序列化,但为了性能及跨语言兼容性,请在保证 客户端与服务端的接口类文件保持一致的情况下使用msgpack序列化

约定

  • 接口类作为接口契约的重要组成部分,请尽量保证客户端与服务端的接口类文件的完全一致性(请引用同样的jar包)
  • 如果在bean中要增加新字段,请务必保证新字段加在字段序的最后

参考

https://www.cnblogs.com/w-bb/articles/6396296.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大摩羯先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值