0.9版本

1、消息集Message set一个消息集中包含一条或多条消息,消息集不仅是存储在磁盘及网络传输的基本形式,而且是kafka压缩的基本单元。2、消息Recode
一个recode是由多个key-value键值对组成,以下介绍各个key的含义。CRC32,大小4B。CRC校验值,校验范围为magic到value之间。magic,大小1B。    消息格式版本号。attributes,大小1B。  消息类型,最低三位为压缩类型。0 无 1 gzip 2 snappy 3 lz4。key length,大小4B。   key的长度,为-1表示没有设置key。key,可选。没有设置key就没有该字段。value length,大小4B。  value的长度,为-1表示没有设置消息。value,可选。   这是消息体。3、日志头部log_overheader
每一个recode都有一个日志头部包含offset和message size两个字段。offset,大小8B。  记录消息在partition中的偏移量。message size,大小4B。   表示消息的总大小。4、最小长度当没有设置key和value时,recode长度最小,为4B+1B+1B+4B+4B=14B。日志头部为8B+4B=12B。
所以消息总大小和.log文件大小为14B+12B=26B。

2、0.10

1、对比
对比0.9版本,新增了一个timestamp字段,大小8B。
且attributes字段第四位启用,标记为时间戳类型。0为CreateTime类型,1为LogAppendTime类型。2、最小长度
当没有设置key和value时,recode长度最小,为4B+1B+8B+1B+4B+4B=22B。
日志头部为8B+4B=12B。所以消息总大小为22B+12B=34B。

0.11版本

1、版本变化对于key length和value length这样记录长度的字段,以int类型保存需要4个字节。
在0.11中引入了变长整型(varint&varlong)和zigzag编码,以此来节约存储空间。
记录长度字段的数值和占用字节的关系:[0,63]占用1B  [64,8191]占用2B [8192,108575]占用3B。2、消息集Recode Batch一个recode batch包含一条或多条消息。每个消息集都分为header和recodes两部分。压缩时只压缩recodes不压缩header。recodes部分则包含一条或多条recode记录。header包含了所有recode的最大最小时间戳、offset、recode个数等信息,共占用61B空间。2、消息Recode
一个recode是由多个key-value键值对组成,以下介绍各个key的含义。length   varint   。记录本recode的长度。attributes  1B   。 保留字段,暂时没用。timestamp delta  varlong 。  保存此recode的时间戳与header中最小时间戳的差值。offset delta varint。  保存此recode的offset与header中最小offset的差值。key length varint。  没有设置key则为0,占用1B。key,可选。没有设置key就没有该字段。value length varint。  没有设置key则为0,占用1B。value,可选。   这是消息体。headers count  varint 。 记录本recode中headers的数量。没有则为0,占用1B。headers,可选。可以有多个。以前很多应用级别的设置要嵌在消息体中,现在设置在headers中即可。有四个字段。header key\header value\header key length\header value length。长度都是varint类型。header key是utf8类型。3、最小长度
当key value都为null,且recode中未设置header,则recode达到理论最小长度:7个变长整形字段,即7B。
则该消息的最小长度:61B+7B=68B.当一个消息集中含有的recode数较少时,由于消息集的header占用61B,
所以0.11版本可能会占用更大的存储。当消息集中recode数较多时,则节省空间较为明显。4、各版本对比
eg. 假设一个消息集中含100个key value都为空的消息时,占用大小对比。0.9版本:  26B*10=260B. 0.10版本:34B*10=340B.0.11版本:61B+7B*10=131B.

Kafak入门第三课:kafka数据格式及各版本占用的空间大小对比相关推荐

  1. C# 编程入门第三课 类型转换,++,关系运算符,bool类型(布尔类型),逻辑运算符,判断闰年,结构

    C# 编程入门第三课 文章目录 C# 编程入门第三课 1. 类型转换 2. ++,-- 3. 关系运算符 4. bool 类型(布尔类型) 5. 逻辑运算符 6.判断闰年 7. 结构 1. 类型转换 ...

  2. Linux入门第三集!JDK8的Linux版本资源分享!jdk-8u301-linux-x64.rpm官方资源分享!Linux安装JDK8教程!

    Linux入门第三集!JDK8的Linux版本资源分享!jdk-8u301-linux-x64.rpm官方资源分享!Linux安装JDK8教程! 提取码均为0916 jdk-8u301-linux-x ...

  3. java包名和类名可以一样吗_Java入门第三课:Java基本语法

    Java基础 编写Java程序时,应注意以下几点: 1.大小写敏感: Java是大小写敏感的,这就意味着标识符Hello与hello是不同的.有些操作系统不区分大小写,不区分的话,文件名是不完全正确的 ...

  4. OpenGL入门第三课--矩阵变换与坐标系统

    在 OpenGL中,物体在被渲染到屏幕之前需要经过一系列的坐标变换,听起来有点吓人:不过呢如果有一定的线性代数的基础利用矩阵变换,其实也就没那么难了.即使没学过线性代数,只需要了解一些基本的矩阵运算也 ...

  5. 韩语学习之——韩语基础入门第三课复合元音

    一 概念 元音分类: 单元音 复合元音 二 复合元音 2.1 ㅣ +单元音 元音 结合前 结合后 汉语发音 ㅏ ㅣ+ㅏ ㅑ 牙(ya) ㅓ ㅣ+ㅓ ㅕ 要(yao) ㅗ ㅣ+ㅗ ㅛ 有(you) ㅜ ...

  6. python入门第三课(初中生学Python)

    继续学习本专栏,请关注初中生学习python专栏

  7. 打开程序时固定位置_新手入门第五课:免费开源图像处理程序GIMP之矩形选择工具...

    GIMP是一款图像处理软件,是跟Photoshop同一类型的软件,为了方便介绍,后面每篇相关GIMP图像处理软件的介绍文章的开头,我都将插入一段文字,用于介绍GIMP是什么,让不熟悉的朋友知道这是干什 ...

  8. 以二进制输出64位类型的数据_Java入门第五课:Java基本数据类型与变量的声明...

    数据类型 基本数据类型 Java有八种基本类型.六种数字类型(四个整数型(默认是int 型),两个浮点型(默认是double 型)),一种字符类型,一种布尔型. Byte.short.int.long ...

  9. C# 编程入门第五课,VS2019程序调试,for循环,水仙花数,Console.Write,又一种类型变换,三元表达式,产生随机数

    C# 编程入门第五课 文章目录 C# 编程入门第五课 1. VS2019程序调试 2. for循环 3. 水仙花数 4. Console.Write() 5. 又一种类型变换 6. 三元表达式 7.产 ...

最新文章

  1. usaco The Castle
  2. MongoDB索引原理和具体使用
  3. 无法查找网络工作组计算机,XP系统弹出“无法查看工作组计算机”提示怎么办?...
  4. picturectrl控件中加载图片并显示_如何在EasyX窗体中显示图片
  5. Android通过透明度设置背景变暗
  6. 多层架构模型中的BLL 与 Model的解释
  7. 剑指 offer代码解析——面试题39推断平衡二叉树
  8. 计算机中的方法,计算机中文本的表示方法
  9. 微前端子应用加载 vue-pdf 时跨域问题解决
  10. java索引越界异常_如何处理Java数组索引越界异常?
  11. 常见的3D打印文件格式都有哪些
  12. vue input 只允许输入整数、整数和小数(保留小数点后两位)
  13. Javascript Module Pattern,公共属性不能获取到最新值(Javascript revealing module pattern, public properties)
  14. ffi一些常见的错误
  15. 【盛天体育出品】天津仁爱学院“彩虹”运动场来了
  16. 3DMAX和MAYA的区别
  17. TestNG-学习笔记
  18. VMware 虚机启动失败问题
  19. 什么是 Android Jetpack?
  20. PCB线路板表面处理工艺的优缺点合集

热门文章

  1. Machine Learning Basics(2)
  2. 分享一些好玩有趣的软件给你
  3. 亲测有效,一招解决错误:This application failed to start because not Qt platform plugin could be initialized.
  4. 微信开发——熟悉支付流程
  5. 计算机系个性策划书,《计算机系12月心理活动策划书》.doc
  6. PCRP21-100-1-SSI-KAB5M VOITH
  7. 理解计算机3D图形学中的坐标系变换
  8. dedecms模板配置大概流程
  9. 解析FPS,刷新率,垂直同步
  10. 企业中如何做好文化建设?