【问题标题】:KStream with multiple nodes具有多个节点的 KStream
【发布时间】:2019-05-29 02:59:58
【问题描述】:

使用 kafka 流构建流应用程序。我有 8 个分区的主题,应用程序不断将消息发布/发布到主题,并在该主题之上创建了一个 Kstream。到目前为止,创建流很好,因为我只启动了一个实例(JVM),根据文档,在本地 JVM 中创建流,但我的问题是如果将代码移动到 QA 或生产中,我将有 8 个 JVM 并行运行,因此 8每个 JVM 创建的流...

现在,我的实时服务(微服务)代码尝试从流中读取数据(IP 地址在 netscaler 后面),由于流在位置,它将如何表现......我所有的 8 个实例都将具有相同的副本数据还是部分数据?

【问题讨论】:

    标签: apache-kafka stream apache-kafka-streams


    【解决方案1】:

    TL;DR:它将是“部分的”。

    在具有基本拓扑结构的 Kafka Streams 应用程序中,只有一个输入主题,假设每个应用程序实例有一个线程 (num.stream.threads),如果您启动多个具有相同应用程序名称的应用程序实例,它们将共享您拥有的分区在您的输入主题中。

    例如,如果您有 8 个分区并像这样启动 8 个 KafkaStreams 实例,则每个实例将管理一个分区(此分配自动发生)。 它还将是容错的:如果 8 个应用程序中的任何一个死掉 - 那么额外的分区将由其他 7 个剩余任务之一管理。此外,如果您添加一个额外的任务(在 8 个分区中有 9 个),其中一个将保持空闲状态,并且仅在任何其他实例发生故障的情况下才会启动。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-12
      • 1970-01-01
      相关资源
      最近更新 更多