Dubbo 支持哪些序列化方式呢

image.png
Dubbo 支持多种序列化方式:JDK 自带的序列化、hessian2、JSON、Kryo、FST、Protostuff,ProtoBuf 等等。

Dubbo 默认使用的序列化方式是 hession2。

谈谈你对这些序列化协议了解?

一般我们不会直接使用 JDK 自带的序列化方式。主要原因有两个:

1. 不支持跨语言调用 : 如果调用的是其他语言开发的服务的时候就不支持了。
2. 性能差 :相比于其他序列化框架性能更低,主要原因是序列化之后的字节数组体积较大,导致传输成本加大。

JSON 序列化由于性能问题,我们一般也不会考虑使用。

像 Protostuff,ProtoBuf、hessian2 这些都是跨语言的序列化方式,如果有跨语言需求的话可以考虑使用。

Kryo 和 FST 这两种序列化方式是 Dubbo 后来才引入的,性能非常好。不过,这两者都是专门针对 Java 语言的。Dubbo 官网的一篇文章中提到说推荐使用 Kryo 作为生产环境的序列化方式。(文章地址:https://dubbo.apache.org/zh/docs/v2.7/user/references/protocol/rest/)

image.png

Dubbo 官方文档中还有一个关于这些序列化协议的性能对比图可供参考。

image.png