多个Kafka Stream与一个Stream消耗多个主题

时间:2018-10-29 10:59:19

标签: apache-kafka apache-kafka-streams

以下是生产环境的最佳实践之一:

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

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

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

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

  

更新1:我有2个主题。第一个主题有1个分区(因为我需要   保持订购)。具有6个分区的第二个主题。

2 个答案:

答案 0 :(得分:0)

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

如果从语义上将业务逻辑划分为不同的流,我建议选择第二种方法。

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

答案 1 :(得分:0)

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