我将在基础设施中实现 Kafka。我有一个用例,其中 Kafka 架构中有以下组件。
- 经纪人数量:5
- 复制因子:3
- 主题数量:3
- 隔断数:3
我必须实现 Kafka 集群的扩展,这意味着我希望 Kafka 基础设施能够足够强大地添加/删除/替换代理。添加/删除实例需要同步其他代理的全部数据才能成为 ISR(同步副本)。我们希望 AWS 自动扩展来做到这一点,如果 Kafka 最终重新平衡某个分区的领导者并分配给这个新代理,我们实际上并不希望整个可用区中有数百 GB 的数据。因此,我们希望使用其中一个代理的相同旧卷。
问题是:
- 如果我想拍摄其
临时存储的快照,我必须选择哪个代理 -> 从中创建卷并将其安装到另一个(新)代理。 - 无论特定分区的领导者是谁,Kafka 是否会在所有代理之间复制相同的数据?
- 如果我们想节省将数据从其他代理同步到新代理时产生的数据传输成本,并且还想扩展集群,那么实现这一目标的最佳方法是什么。
答案1
- 我怀疑您是否能够复制现有的代理来扩大规模......因为没有两个代理是相同的,因为节点 1 可能是主题 1>分区 1 的领导者,而节点 2 可能是主题 1>分区 2 的领导者。
然而,如果找到这样的解决方案我会非常高兴。
Kafka 将其复制到复制因子,由于您的复制因子为 3,因此它将被复制到 3 台机器。但是复制将按分区进行。因此继续上面的例子...topic-1>partition-1 领导者是节点 1,但副本可能存储在节点 2 和节点 3 上
理想情况下,应该清除主题,不要保留数据太久……这样你就不必在新的节点之间复制大量数据。但如果你的用例需要这样做,那么我不确定是否有任何有效的解决方案