性能优化——避免使用Java序列化

当前大部分后端服务都是基于微服务架构实现的。服务按照业务划分被拆分,实现了服务的解偶,但同时也带来了新的问题,不同业务之间通信需要通过接口实现调用。两个服务之间要共享一个数据对象,就需要从对象转换成二进制流,通过网络传输,传送到对方服务,再转换回对象,供服务方法调用。这个编码和解码过程我们称之为序列化与反序列化。
 
在大量并发请求的情况下,如果序列化的速度慢,会导致请求响应时间增加;而序列化后的传输数据体积大,会导致网络吞吐量下降。所以一个优秀的序列化框架可以提高系统的整体性能。
 
我们知道,Java 提供了 RMI 框架可以实现服务与服务之间的接口暴露和调用,RMI 中对数据对象的序列化采用的是 Java 序列化。 而目前主流的微服务框架却几乎没有用到 Java序列化,SpringCloud 用的是 Json 序列化,Dubbo 虽然兼容了 Java 序列化,但默认使用的是 Hessian 序列化。这是为什么呢?
 
今天我们就来深入了解下 Java 序列化,再对比近两年比较火的 Protobuf 序列化,看看Protobuf 是如何实现最优序列化的。
 
Java 序列化
 
在说缺陷之前,你先得知道什么是 Java 序列化以及它的实现原理。

猜你喜欢

转载自blog.csdn.net/qq_36589864/article/details/108103479