kafka 生产者压缩

kafka 生产者压缩

在kafka 中,压缩可能发生在两个地方:生产正端和消费者端。

一般遵循Producer 端压缩、Broker 端保持、Consumer 端解压缩

生产者端-压缩

生产者程序中配置 compression.type 参数即表示启用指定类型的压缩算法

Properties props = new Properties(); 
props.put("bootstrap.servers", "localhost:9092"); 
props.put("acks", "all");
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer"); 
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer"); 
// 开启GZIP压缩 
props.put("compression.type", "gzip"); 
Producer producer = new KafkaProducer<>(props);

Broker 端-压缩

一般遵循Producer 端压缩、Broker 端保持,但是broker 也会进行压缩的情况,例如以下两种情况:

情况一:Broker 端指定了和 Producer 端不同的压缩算法

Producer 说:“我要使用 GZIP 进行压缩。”

Broker 说:“不好意思,我这边接收的消息必须使用 Snappy 算法进行压缩。”

情况二:Broker 端发生了消息格式转换。

所谓的消息格式转换主要是为了兼容老版本的消费者程序。

broker 端解压缩

除了在 Consumer 端解压缩,Broker 端也会进行解压缩。每个压缩过的消息集合在 Broker 端写入时都要发生解压缩操作,目的就是为了对消息执行各种验证。

生产者端-解压缩

消息从Producer到Broker在到Consumer会一直携带消息的压缩方式,这样当 Consumer 读取到消息集合时,它自然就知道了这些消息使用的是哪种压缩算法。

各种压缩算法对比

Kafka 支持 3 种压缩算法:GZIP、Snappy 、LZ4、Zstandard。(每个版本之间会有差异)

压缩算法的重要指标:

压缩比,原先占 100 份空间的东西经压缩之后变成了占 20 份空间,那么压缩比就是 5,显然压缩比越高越好。

压缩 / 解压缩吞吐量,比如每秒能压缩或解压缩多少 MB 的数据。同样地,吞吐量也是越高越好。

image-20220724100534689

参考:

https://blog.csdn.net/kafka_zsxq/article/details/122336727

posted @ 2022-08-11 12:53  sixinshuier  阅读(834)  评论(0编辑  收藏  举报