6 netty网络篇,前置知识3,序列化

概况

 ​ 这篇文章会讲一下序列化的重要性和序列化工具的选型。

​  我们在系统间接口的调用中,基本上都会用到序列化和反序列化。下图是订单中心从用户中心获取用户的场景,会发生以下动作。

 ​ 1 用户中心先将User对象序列化为json字符串

 ​ 2 然后通过网络将json字符串传送到订单中心

 ​ 3 订单中心将json字符串反序列化为User对象,然后接着做下面的业务操作

在这里插入图片描述

在上面的例子中,序列化和反序列化主要影响有两点:

 ​ 1 序列化和反序列化的时间(或者说消耗的资源)

​  2 序列化后的大小



​  序列化工具的选型会对机器和网络都会造成影响,如果每次序列化消耗的资源过高,那么在较高的并发下,机器资源会造成系统性能的瓶颈。同样的,如果序列化后的包体大小很大,那么在较高的并发下,数据会占满带宽,这将会对业务造成很大的影响。

 ​ 下图是报文占满带宽的情景。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ozI2IDMT-1629704974184)(C:\Users\梁家星\AppData\Roaming\Typora\typora-user-images\image-20210823125920636.png)]

序列化工具的比较

非JSON:

工具名版本消耗时间(10万次序列化)消耗时间(10万次反序列化)序列化包体大小
jprotobufjprotobuf 2.4.9107ms30ms11字节
hessian4.0.6520ms33ms51字节
Kyro5.2.022ms53ms8字节

JSON:

工具名版本消耗时间(10万次序列化)消耗时间(10万次反序列化)序列化包体大小
fastjson1.2.78220ms81ms27字节
jackson1.9.13169ms165ms27字节
gson2.8.8180ms140ms27字节




总结:

 1 如果是使用json的话,fastjson可能相对性能好一点点

 2 Kyro序列号的包体最小,如果公司租用的带宽较小,可以考虑kyro

 3 hessian,Kyro性能都很好,但是hessian序列化后的包体比较大,如果公司服务器性能是瓶颈,可以考虑Kyro



 下面是本次测试的代码,代码路径是 org.example.App。

 测试代码:https://gitee.com/shenduedu/serialdemo.git

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值