前言:最近一个项目由于请求体比较大,使用dubbo默认的序列化方式(hessian2)性能达不到项目要求,经过调研最后准备使用kryo,其中踩到的坑和大家分享下。
选择kryo原因:
- 性能比较好
- dubbo已经支持kryo
配置kryo
dubbo的依赖包
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
<version>2.7.8</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-dependencies-zookeeper</artifactId>
<version>2.7.8</version>
<type>pom</type>
</dependency>
参考官方文档,进行相关配置,文档地址,文档上表明使用kryo序列化十分简单,只需要如下截图配置即可。但是配置完成后怎么都不行,去网上查询dubbo中kryo的使用,清一色的参考官方文档写得copy的,我不知道这些文章作者是否都有验证过。
上面这个注册序列化类,提高新能,在写demo时候可以先不配置,调通后再配置。
注意:通过查看报错信息和查询jar包依赖,发现是缺少kryo序列化的相关依赖。于是在测试的consumer和provider添加如下依赖,发现可以调用成功了。
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-serialization-kryo</artifactId>
<version>2.7.8</version>
</dependency>