【问题标题】:How does Kafka achieve its parallelism with multiple consumption on the same topic same partition?Kafka如何在同一个主题同一个分区上实现多次消费的并行性?
【发布时间】:2017-09-28 13:03:00
【问题描述】:

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

例如,

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 是如何扩展这种读取负载的呢?

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

谢谢

【问题讨论】:

  • Kafka 并不是要这样使用的,即单主题单分区方式的生产/消费。它通过分区来“扩展”,如果您不倾向于使用它,它的扩展性不会很大。

标签: multithreading apache-kafka


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2019-09-26
    • 2020-09-19
    • 2017-12-23
    • 2019-02-18
    • 1970-01-01
    • 2014-10-25
    • 2017-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多