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

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

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

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

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

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

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

相关推荐
Aision_12 小时前
从工具调用到 MCP、Skill完整学习记录
java·python·gpt·学习·langchain·prompt·agi
辞旧 lekkk16 小时前
【Qt】信号和槽
linux·开发语言·数据库·qt·学习·mysql·萌新
zc.z16 小时前
JAVA实现:纯PCM格式音频转换成BASE64
java·音视频·pcm
mask哥16 小时前
力扣算法java实现汇总整理(上)
java·算法·leetcode
2zcode16 小时前
运动模糊图像复原的MATLAB仿真与优化
开发语言·matlab
袁雅倩199716 小时前
当吸尘器、筋膜枪都用上Type-C,供电方案该怎么选?浅谈PD取电芯片ECP5702的应用
c语言·开发语言·支持向量机·动态规划·推荐算法·最小二乘法·图搜索算法
Aaswk17 小时前
Java Lambda 表达式与流处理
java·开发语言·python
是宇写的啊18 小时前
Spring AOP
java·spring
万邦科技Lafite18 小时前
京东item_get接口实战案例:实时商品价格监控全流程解析
java·开发语言·数据库·python·开放api·淘宝开放平台
Cyber4K19 小时前
【Python专项】进阶语法-系统资源监控与数据采集(1)
开发语言·python·php