kafka流:跨应用示例移动的流任务

qybjjes1  于 2021-06-08  发布在  Kafka
关注(0)|答案(1)|浏览(275)

考虑流应用程序设置,输入主题为6个分区,其中有一个状态存储。假设每小时有超过500万条记录不断流入。如果应用程序在单个节点上运行,则所有传入记录的状态将保留在同一节点中。现在,如果我们在另一个节点上添加另一个示例,我假设它将均衡两个示例之间的分区(假设我们在每个示例中设置最大线程数为3)。
我想我的问题是,当重新平衡发生时,如果一个分区示例从一个示例移动到另一个示例,反之亦然,这将导致恢复这些分区在各自示例上的状态存储,这需要时间。由于重新平衡而频繁地在示例(尤其是大量示例)之间洗牌分区不会是一个主要的开销并影响流性能吗。我不确定是否有可能完全阻止重新平衡(我理解这是为了负载平衡的好处),但这不会阻止使用存储的同一主题的多个示例的扩展吗?

mutmk8jj

mutmk8jj1#

kafka streams使用自己的 PartitionAssignor (不是 KafkaConsumer )并实现了粘性分配策略。在重新平衡期间,我们知道哪些分区被分配给了哪些分区 KafkaStreams 示例,如果可能的话,我们尝试将分区重新分配给同一个示例,以避免状态移动。当然,负载平衡也起到了允许扩展场景的作用。

相关问题