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

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

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

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

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

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

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

相关推荐
SL_staff2 分钟前
插单风险的数据闭环治理:JVS-BI 在制造业实时预警中的技术实践
java·数据分析·数据可视化
萧瑟余晖6 分钟前
Hibernate 核心原理与架构详解
开发语言·架构·hibernate
爱喝水的鱼丶6 分钟前
SAP-ABAP:SAP MM 模块物料主数据批量导入与增强开发:字段扩展、校验逻辑与批量导入工具开发
开发语言·性能优化·sap·abap·增强·经验交流·mm
geovindu10 分钟前
rust:Builder Pattern
开发语言·设计模式·rust·建造者模式
白远山19 分钟前
健身场馆无人自动化解决方案:从架构到落地实践
java·开发语言·数据库·数据挖掘·需求分析
user_admin_god35 分钟前
第 01 篇:OpenAI 兼容 API 初探 —— 用 curl 跑通第一次对话
java·人工智能·spring boot·语言模型·devops
曹牧38 分钟前
PostMan:400 Bad Request‌
java
devpotato1 小时前
RPO与RTO:容灾的两个关键指标
java·后端
宁渡AI大模型1 小时前
AI 全栈面试新趋势:Vibe Coding、前端、Java 后端高频面试题深度解析|河南宁渡科技有限公司编程教程
java·javascript·人工智能·python·ai大模型
CallFay云起未来1 小时前
AI客服如何与人工客服协同?从任务路由到上下文交接的Agent架构实践
java·人工智能·文心一言