以下哪一项是生产环境的最佳实践:1:一个流从多个主题中消耗,并写入多个主题。2:创建多个流(每个流具有不同的app.id),用于从不同的主题消费和写入不同的主题。我不确定第一种方法,因为当所有主题中的数据量都将增加时,消费者是否会滞后?我应该决定什么因素,上面哪种方法最适合我的场景?更新1:我有两个主题。第一个主题有一个分区(因为我需要保持顺序)。第二个主题有6个分区。
guicsvcw1#
这在很大程度上取决于您的用例场景(例如,消费者使用哪种业务逻辑,他们是如何部署的:独立应用程序、集群等)。你的问题更多的是架构方面。两种解决方案都是可行的,具体情况在您的特定用例中。如果您在语义上将业务逻辑拆分为不同的流,我建议使用第二个选项。关于数据量,请记住,大多数Kafka消费者应该受益于背压机制,因此他们将处理他们的消费量。
72qzrwbm2#
我总是建议您使用选项2,因为使用选项2我们还可以实现容错,即如果您的一个应用程序示例出现故障,则由该示例处理的分区将分布到其他正在运行的示例。如果要使用并行性,那么应该对所有流处理示例使用相同的app.id。
2条答案
按热度按时间guicsvcw1#
这在很大程度上取决于您的用例场景(例如,消费者使用哪种业务逻辑,他们是如何部署的:独立应用程序、集群等)。你的问题更多的是架构方面。两种解决方案都是可行的,具体情况在您的特定用例中。
如果您在语义上将业务逻辑拆分为不同的流,我建议使用第二个选项。
关于数据量,请记住,大多数Kafka消费者应该受益于背压机制,因此他们将处理他们的消费量。
72qzrwbm2#
我总是建议您使用选项2,因为使用选项2我们还可以实现容错,即如果您的一个应用程序示例出现故障,则由该示例处理的分区将分布到其他正在运行的示例。如果要使用并行性,那么应该对所有流处理示例使用相同的app.id。