什么样的数据格式会被认为是最快写在Kafka上?

mec1mxoz  于 2021-06-08  发布在  Kafka
关注(0)|答案(1)|浏览(220)

在kafka中,我们有各种各样的选项在上面写数据,例如:字符串格式、字节数组。在写Kafka的时候,什么样的数据被认为是最快的。
此外,Kafka还提供了任何实用工具,可以将整个数据压缩一次,然后在上面进行写入。
还需要考虑在消耗相同的消息时我们将对其进行反压缩,因此读取数据的成本将增加。

3bygqnnd

3bygqnnd1#

kafka0.8.2将数据序列化为字节数组,并将其提交到其提交日志中。这个 org.apache.kafka.common.serialization.Serializer 类具有以下接口:

byte[] serialize(String var1, T var2);

它要求返回一个字节数组,作为要写入kafka主题的数据。所以 org.apache.kafka.common.serialization.StringSerializer 类当前必须从字符串中提取字节数组:

public byte[] serialize(String topic, String data) {
        try {
            return data == null?null:data.getBytes(this.encoding);

因此在性能方面,如果您有二进制数据,那么使用默认序列化程序将其写入字节数组,因为在java中创建字符串可能会非常昂贵,kafka所要做的就是将字符串转换为字节数组。
关于压缩Kafka目前提供以下压缩选项对生产者的开箱即用:
压缩.codec
此参数允许您为此生产者生成的所有数据指定压缩编解码器。有效值为“none”、“gzip”和“snappy”。
请参阅Kafka的一位合著者的以下文章,但总结一下,gzip提供了最好的压缩,但也需要更多的cpu周期。snappy是一个很好的折衷方案,它可以压缩数据,并且在许多情况下允许更高的吞吐量。gzip更适合跨数据中心复制,因为它需要较少的带宽。

相关问题