Kafka数据压缩

本文介绍了Kafka中的数据压缩,包括消息的结构、0.11版本的消息格式变更,以及压缩在生产者、Broker和消费者端的工作原理。Kafka支持GZIP、Snappy、LZ4和Zstandard等压缩算法,选择时需要考虑压缩比和吞吐量。
摘要由CSDN通过智能技术生成

背景

数据压缩,是一种用时间换空间的思想,就是说通过cpu使用率的升高,来降低磁盘空间和网络IO,比如在hadoop中通过DEFLATE、LZ4、Snappy,都是用来做数据压缩的降低数大小,使hadoop整体集群存储能力能耗。在kafka中,数据压缩也是用来做相同事情的。

数据的压缩方式

Kafka 的消息分为两个层级:消息集合以及消息。一个消息集合中包含若干条日志项,而日志项才是真正封装消息的地方。Kafka 底层的消息日志由一系列消息集合日志项组成。Kafka 通常不会直接操作具体的一条条消息,它总是在消息集合这个层面上进行写入操作。

在Kafka 0.11.0.0版本的时候,一个重要的升级就是kafka消息格式变更,那么消息变更的目的是什么?0.11版本主要是针对的一些弊端做了修正,其中比较关键的是把消息的公共部分抽取出来放到外层消息集合里面,这样就不用每条消息都保存这些信息了。

原来在 0.11之前的 版本中,每条消息都需要执行 CRC 校验,但有些情况下消息的 CRC 值是会发生变化的。比如在 Broker 端可能会对消息时间戳字段进行更新,那么重新计算之后的 CRC 值也会相应更新;再比如 Broker 端在执行消息格式转换时(主要是为了兼容老版本客户端程序),也会带来 CRC 值的变化。鉴于这些情况,再对每条消息都执行 CRC 校验就有点没必要了,不仅浪费空间还耽误 CPU 时间,因此在 0.11 版本以后,消息的 CRC 校验工作就被移到了消息集合这一层。

压缩

在 Kafka 中,压缩是发生在生产者端和 Broker 端的。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值