如何手搓序列化器(以java为例)

在学kafka的过程中,我发现kafka并没有封装序列化器,需要程序员自己去手动构造,而构造方法的差异很大程度上会影响kafka最终的性能,以下有两种构造思路:

  1. 使用Json。由于json有自带的序列化和反序列化方法,因此可以直接使用json。

缺点:拥有冗余信息,比如"{}" ":" ,这些冗余信息在kafka持久化的场景下会占用更多的内存,性能会成倍的受到影响。

  1. 手搓序列化。java里有两种数据类型,一类是定长的,比如int long等,可以直接转化为比特流。另一类是不定长的,比如string 甚至user对象。

第二类不定长的该如何序列化以及反序列化呢?

可以参考tcp粘包的思路,将长度放在前面存储,序列化时先序列化长度,再序列化存储的内容。反序列化时,先读取长度,再根据长度反序列化内容。没有冗余数据,性能得以提升

相关推荐
张不才15 小时前
CPU 100% 了怎么办?Java 性能排障的标准化操作
java·后端
shepherd11117 小时前
吞吐量提升 10 倍:高并发大批量数据处理任务的架构演进与性能调优
java·后端·架构
plainGeekDev19 小时前
单例模式 → object 声明
android·java·kotlin
用户2986985301420 小时前
Java 实现 Word 文档文本与图片提取的方法
java·后端
SimonKing21 小时前
铁子,IntelliJ IDEA 2026.1.3来了,升不升?
java·后端·程序员
咖啡八杯1 天前
GoF设计模式——策略模式
java·后端·spring·设计模式
用户128526116022 天前
我把祖传Java项目重构后,接口响应从3s砍到了200ms,只改了这几行代码
java
Linsk2 天前
组件 = 模板 + 业务逻辑
java·前端·vue.js
星沉远浦2 天前
用Gemini高效解决Java代码报错难以定位的问题
java