Kafka 之 如何高吞吐和低延迟

1.顺序读写

kafka 顺序读写快 & hbase 随机读写快
>>> kafka消息不断追加,可以充分利用磁盘的顺序读写性能
      不需要硬盘磁头的寻道时间,只需要很少的扇区旋转时间,速度远快于随机

>>> hbase因为先找缓存,和HDFS比快

2.零拷贝

见:https://segmentfault.com/a/1190000023778797

在Linux kernel2.2后出现了一种叫做“零拷贝”的系统调用机制,就是跳过“用户缓冲区”的拷贝,建立一个磁盘空间和内存的直接映射,数据不再复制到“用户态缓冲区”

kfk调用的是FileChannel.transferTo,底层是sendFile

 

3.批量发送

kfk允许进行批量发送消息,producer发送消息的时候,可以将消息缓存本地,等到了固定条件发送到kfk

  1. 等消息条数到固定条数
  2. 一段时间发送一次

4.数据压缩 

kfk还支持对消息集合进行压缩,Producer可以通过GZIP或Snappy格式对消息集合进行压缩
压缩的好处就是:减少传输的数据量,减轻对网络传输的压力
>>>  批量发送 和 数据压缩 一起使用,单条做数据压缩的话,效果不明显

5.分区

kafka的topic被分成了多个partition,每个partition分成多个segment,所以一个队列中的消息实际上是保存在N多个片段文件中。

1. 通过分段的方式,每次文件操作都是对一个小文件的操作,轻便。

2. 同时分区增加了并行处理能力/

原文地址:https://www.cnblogs.com/sabertobih/p/14100407.html