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

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

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

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

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

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

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

相关推荐
meilindehuzi_a8 小时前
从零理解并实现 RAG:用 LangChain.js 构建语义检索问答系统
开发语言·javascript·langchain
风流 少年8 小时前
Julia
开发语言·julia
wuqingshun3141598 小时前
什么是责任链模式,一般用在什么场景?
java·责任链模式
江畔柳前堤8 小时前
GO01-Go 语言与主流编程语言深度对比
开发语言·人工智能·后端·微服务·云原生·golang·go
:-)9 小时前
算法-归并排序
java·开发语言·数据结构·算法·排序算法
wuqingshun3141599 小时前
说一下消息队列的模型有哪些?
java
GIS阵地10 小时前
QgsRasterDataProvider 完整详解(QGIS 3.40.13 C++)
开发语言·c++·qt·开源软件·qgis
fīɡЙtīиɡ ℡10 小时前
布隆过滤器
java
yaoxin52112311 小时前
462. Java 反射 - 获取声明类与封闭类
java·开发语言·python
阿里嘎多学长11 小时前
2026-07-14 GitHub 热点项目精选
开发语言·程序员·github·代码托管