【问题标题】:Multiple Kafka Stream vs One Stream consuming multiple topics多个 Kafka 流与一个消耗多个主题的流
【发布时间】:2018-10-29 10:59:18
【问题描述】:

以下哪一项是生产环境的最佳做法:

1:一个流消耗多个主题并写入多个主题。

2:创建多个流(每个流具有不同的 app.id),用于从不同的主题消费并写入不同的主题。

我不确定第一种方法,因为当所有主题中的数据量都会增加时,消费者不会滞后吗?

我应该根据什么因素来决定,以上哪种方法最适合我的情况?

更新 1:我有 2 个主题。第一个主题有 1 个分区(因为我需要 维持秩序)。第二个主题有 6 个分区。

【问题讨论】:

  • 所有主题都应该以相同的方式处理吗?在特定主题中产生消息的条件是什么?
  • 不,所有主题都不会以相同的方式处理。主题会有不同类型的数据。

标签: apache-kafka apache-kafka-streams


【解决方案1】:

这在很大程度上取决于您的用例场景(例如,消费者执行什么样的业务逻辑,它们是如何部署的:独立应用程序、集群等)。您的问题更多是在架构方面。两种解决方案都是可行的,具体情况取决于您的特定用例。

如果您在语义上将业务逻辑拆分为不同的流,我建议您使用第二个选项。

关于数据量,请记住,大多数 Kafka 消费者应该受益于背压机制,因此他们将处理他们消费的数量。

【讨论】:

    【解决方案2】:

    我始终建议您使用选项 2,因为使用选项 2 我们还可以实现容错,即如果您的应用程序实例出现故障,则该实例处理的流分区将分发给其他正在运行的实例。如果您想使用并行性,那么您应该为所有流处理实例使用相同的 app.id。

    【讨论】:

    • 使用第一种方法,我可以运行多个实例来实现并行性。
    猜你喜欢
    • 1970-01-01
    • 2021-10-05
    • 1970-01-01
    • 2017-08-15
    • 1970-01-01
    • 2020-07-25
    • 1970-01-01
    • 1970-01-01
    • 2022-12-03
    相关资源
    最近更新 更多