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

时间:2015-09-21 12:43:57

标签: java apache-kafka kafka-consumer-api

我们在Kafka中有各种选项可以在其上写入数据,例如:字符串格式,字节数组。 在Kafka上写作时,哪些数据被认为是最快的。

此外,kafka提供任何实用程序来压缩整个数据,然后在其上书写。

同样需要考虑消耗相同的消息,我们将对其进行解压缩,因此读取数据的成本会增加。

1 个答案:

答案 0 :(得分:2)

Kafka 0.8.2将数据作为字节数组序列化到其提交日志中。 org.apache.kafka.common.serialization.Serializer类具有以下接口:

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

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

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

所以在性能方面,如果你有二进制数据然后使用默认的序列化器将其写入字节数组,因为在Java中创建字符串可能很昂贵,而且所有Kafka都会将你的字符串转换为字节数组。

关于压缩Kafka目前在生产者开箱即可提供以下压缩options

  
      
  • compression.codec
  •   
  • 此参数允许您为此生产者生成的所有数据指定压缩编解码器。有效值为“none”,   “gzip”和“snappy”。
  •   

请参阅Kafka联合创作者之一的以下article,但总结一下,GZIP提供了最佳压缩,但也需要更多的CPU周期。 Snappy是一个很好的折衷方案,可以压缩数据,在许多情况下可以提高吞吐量。 GZIP更适合跨数据中心复制,因为它需要更少的带宽。