Kafka如何在同一主题相同的分区上实现多次消费的并行性?

时间:2017-09-27 23:47:26

标签: multithreading apache-kafka

我已从多个来源读取堆栈溢出,表明使用多个使用者组将使我能够同时从同一主题读取来自多个使用者的同一分区。

例如,

Can multiple Kafka consumers read from the same partition of same topic by default?

How Kafka broadcast to many Consumer Groups

Parallel Producing and Consuming in Kafka

所以这是我上一个问题的后续问题,但背景略有不同。鉴于我们只能读取写入到分区领导者,并且Kafka日志存储在硬盘上。每个分区代表一个日志。

现在,如果我有100个消费者群体从相同主题相同分区中读取,那么基本上是从同一台计算机读取,因为我们只允许从分区读取领导者无法从分区副本中读取,那么Kafka如何扩展这种读取负载呢?

它如何实现并行性?它是否只是在同一台机器上产生许多线程和进程来同时处理所有的消耗?这种方法如何横向扩展?

谢谢

1 个答案:

答案 0 :(得分:0)

如果你有100个消费者都从同一个分区读取,那么该分区的数据将被缓存在Linux OS页面缓存(内存)中,因此99或甚至所有100个消费者将从RAM中获取数据来自旋转的硬盘。这是Kafka的一个独特功能,尽管它是用JVM语言编写的,但它可以利用堆内存来获得相同数据的并行使用者的额外性能。