Dubbo 使用 kryo 序列化
文章目录
- 前言
- 为什么用 kryo 做序列化?
- 怎么使用 Kryo?
- 1. 引入 Kryo 依赖
- 2. 增加配置
- 3. 其他代码
- 4. 如果增加了自己的序列化类,怎么做?
- 4.1 需要被序列化的实体
- 4.2 序列化类的实现
- 4.3 使用
- 5. 结果
前言
本文大部分参考官方文档:https://dubbo.apache.org/zh/docsv2.7/user/serialization/
代码部分,是本人自己写的案例中增加配置得到的。因此,写个原创不过分吧。
为什么用 kryo 做序列化?
众所周知,在 RPC 框架中,最最重要,也是最影响性能的地方是序列化和传输协议。
那么对于 Dubbo
而言,本身默认使用的序列化 hessian2
其实也挺好的了。
但还是美中不足。与 Kryo相比,Kryo 的体积更小,而且官方的测试结果也显示, Kryo 更快。也是官方更加推荐使用的。
怎么使用 Kryo?
1. 引入 Kryo 依赖
在你的 springboot 项目中,首先引入 kryo 的 maven 依赖(版本你自己看着办,不一定非要和我用一样的):
<!-- 添加序列化依赖 --><dependency><groupId>de.javakaffee</groupId><artifactId>kryo-serializers</artifactId><version>0.42</version></dependency>
2. 增加配置
我这里使用的是属性文件配置:
# 指定使用看 Kryo 做序列化
dubbo.protocol.serialization=kryo
# 自己实现注册(也可以不加)
#dubbo.protocol.optimizer=org.feng.kryo.SerializationOptimizerImpl
3. 其他代码
我是在这个demo的基础上加的:
https://blog.csdn.net/FBB360JAVA/article/details/120847768
4. 如果增加了自己的序列化类,怎么做?
4.1 需要被序列化的实体
package org.feng.entity;import java.io.Serializable;public class MyBean implements Serializable {private static final long serialVersionUID = 9209554053837563785L;private String name;private String body;public MyBean() {}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getBody() {return body;}public void setBody(String body) {this.body = body;}@Overridepublic String toString() {return "MyBean{" +"name='" + name + '\'' +", body='" + body + '\'' +'}';}
}
4.2 序列化类的实现
package org.feng.kryo;import org.apache.dubbo.common.serialize.support.SerializationOptimizer;
import org.feng.entity.MyBean;import java.util.Collection;
import java.util.LinkedList;
import java.util.List;public class SerializationOptimizerImpl implements SerializationOptimizer {@Overridepublic Collection<Class<?>> getSerializableClasses() {List<Class<?>> classes = new LinkedList<>();// 将自己的bean注册进去classes.add(MyBean.class);return classes;}
}
4.3 使用
在配置中指定这个实现类即可。
5. 结果
The URL[dubbo://172.173.173.69:20880/org.feng.service.DemoStartService?anyhost=true&application=springboot-dubbo-nacos-provider-mytest&deprecated=false&dubbo=2.0.2&dynamic=true&generic=false&interface=org.feng.service.DemoStartService&metadata-type=remote&methods=print,sayName&pid=29784&release=2.7.8&revision=1.0.0&serialization=kryo
&side=provider×tamp=1635152781434&version=1.0.0] deregistered successfully., dubbo version: 2.7.8, current host: 172.173.173.69
可以看到,在控制台的日志中,显示使用了 kryo。
Dubbo 使用 kryo 序列化相关推荐
- java kryo 序列化_java中的序列化方式及dubbo使用kryo序列化
java中的序列化方式: 1. 自带序列化 ObjectInputSteam. ObjectOutStream等 2. hession2 3. json ,xml等格式 4.kryo 5.FST - ...
- dubbo kryo序列化_为什么如此高效?解密kryo各个数据类型的序列化编码机制,强...
用过dubbo的开发人员,在替换序列化时都会根据"经验"来选kryo为序列化框架,其原因是序列化协议非常高效,超过java原生序列化协议,hessian2协议,那kryo为什么高效 ...
- avro和java原生序列化的区别,java原生序列化和Kryo序列化性能比较
简介 最近几年,各种新的高效序列化方式层出不穷,不断刷新序列化性能的上限,最典型的包括: 专门针对Java语言的:Kryo,FST等等 跨语言的:Protostuff,ProtoBuf,Thrift, ...
- 【java】java原生序列化和Kryo序列化性能实例对比分析
1.美图 2.概述 最近几年,各种新的高效序列化方式层出不穷,不断刷新序列化性能的上限,最典型的包括: 专门针对Java语言的:Kryo,FST等等 跨语言的:Protostuff,ProtoBuf, ...
- krait和kryo_java原生序列化和Kryo序列化性能比较
简介 最近几年,各种新的高效序列化方式层出不穷,不断刷新序列化性能的上限,最典型的包括: 专门针对Java语言的:Kryo,FST等等 跨语言的:Protostuff,ProtoBuf,Thrift, ...
- krait和kryo_java原生序列化和Kryo序列化性能实例对比分析
简介 最近几年,各种新的高效序列化方式层出不穷,不断刷新序列化性能的上限,最典型的包括: 专门针对java语言的:Kryo,FST等等 跨语言的:Protostuff,ProtoBuf,Thrift, ...
- 在Spark中自定义Kryo序列化输入输出API(转)
原文链接:在Spark中自定义Kryo序列化输入输出API 在Spark中内置支持两种系列化格式:(1).Java serialization:(2).Kryo serialization.在默认情况 ...
- Kryo序列化实现源码分析
在使用Kryo序列化之前需要将被序列化的类通过register()方法注册到其中去. 在register的过程中,实则是要根据要序列化的类生成对应的Registration,Registration中 ...
- 【Spark】Spark的Kryo序列化
1.美图 2.Spark序列化概述 在Spark的架构中,在网络中传递的或者缓存在内存.硬盘中的对象需要进行序列化操作,序列化的作用主要是利用时间换空间: 分发给Executor上的Task 需要缓存 ...
- Netty使用kryo序列化传输对象
Netty使用kryo序列化传输对象 横渡 Netty使用kryo序列化传输对象 - 简书参考文章:https://blog.csdn.net/eguid_1/article/details/7931 ...
最新文章
- 世界杯规则终因IT而改变
- Linux - SVN下载项目
- centOS防火墙中端口的开启和关闭
- win8桌面壁纸路径
- 挖掘 OSINT 金矿——实习生和社交媒体
- boost::mpl::divides相关的测试程序
- MyBatis在Oracle中插入数据并返回主键的问题解决
- web页面找不到资源文件,报404,但是资源文件存在且路径没错
- Vue.js - Day2
- #define 与 typedef
- 数据库报错“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”
- 中电信总工:我国将在2011底出现IP短缺
- X264码率控制总结——ABR,CQP,CRF
- Vue中router-link路由跳转以及传参方式
- linux系统halt,Linux命令之halt - 停止系统运行但不关闭电源
- 妙味课堂:JavaScript初级--第11课:字符串、查找高亮显示
- Leetcode466.统计重复个数——掐头去尾寻找循环点
- 论文精读:GHM:Gradient Harmonized Single-stage Detector
- 走Java道路怎么样,如何学习
- 无聊到能吓死一湾人的鬼畜代码
热门文章
- su sudo 命令
- 关于手机使用中信号强弱 网速快慢 频段的相关常识
- Apache Axis2项目的联合创始人总结30条架构原则
- 传递给Appium服务器以开启相应安卓Automation会话的Capabilities的几点说明
- vue图片时间轴滑动_响应式垂直时间轴组件– vuetimeline
- 计算机工程制图箭头怎么画,cad中箭头画法
- 苹果iPhone手机怎么恢复备份?详细iOS备份怎么恢复教程
- LOJ #2155. 「POI2011 R1」同谋者 Conspiracy(深入性质分析)
- bilibili直播 斗鱼直播等直播工具黑屏怎么办?
- pip安装报错:There was a problem confirming the ssl certificate