Kafka压缩:如何在单个消息级别进行压缩

时间:2017-03-20 04:10:08

标签: apache-kafka kafka-producer-api

当我向Kafka主题发送消息时,我可能会收到一条与其他消息相比尺寸更大的消息。

因此需要在单个消息级别进行压缩。 根据{{​​3}},

  

可以压缩一组消息并将其表示为一个压缩的消息   消息。

同样根据这里给出的描述 https://cwiki.apache.org/confluence/display/KAFKA/Compression 对于属性compression.type,

  

压缩是完整批次的数据,所以批量的功效   也将影响压缩比(更多配料意味着更好   压缩);

我应该将批量大小作为一个/禁用批处理以在每个消息级别进行压缩吗?

1 个答案:

答案 0 :(得分:0)

压缩与批量生产或不生产的问题正交。但是,正如文档中所述:

  

更多批处理意味着更好的压缩

压缩可以在主题级别(https://kafka.apache.org/documentation/#topicconfigs)中设置,也可以作为生成器配置(https://kafka.apache.org/documentation/#producerconfigs)的一部分进行设置。此外,同一主题中的不同消息可以使用不同类型进行压缩,因为压缩类型是记录元数据(https://kafka.apache.org/documentation/#recordbatch)的一部分,并且它对消费者来说是无缝的。

但是,如果您需要有选择地压缩不同的消息,则无法使用相同的生成器完成,因为生产者配置是静态的。无论这种选择的动机是什么,你都可以创建两个生成器实例(一个支持压缩,一个不压缩),根据消息内容,决定使用哪个生产者发送它。