我只是想了解分布式系统的机制及其数据存储机制。大多数分布式系统都在群集中复制了数据,以防止数据丢失。
但我想要了解的是,假设我有一个3个系统的集群,每个系统的内存为1TB,主节点正在复制其他2个节点中的数据。假设主节点使用500GB内存,则其他2个节点应使用相同数量的内存来复制数据。
如果这是真的,那么在这种情况下,我应该如何增加群集的内存容量。因为在这种情况下,它将保持相同数量的数据(即最大1TB),即使在内存容量超过其所持数据的群集上也是如此。
答案 0 :(得分:1)
这是事实。缩放群集内存的方法是对数据进行分区。因此,如果将另一个节点添加到三个节点群集,则将数据集拆分为四个分区(通常按键),并在三个节点上复制每个分区。如果添加另一个节点,请添加另一个分区。
但这会在分布式系统中产生一个众所周知的问题。将节点添加到具有按键分区的数据集的集群时,必须重新分区并重新平衡整个数据集。这可能是一种不切实际的昂贵操作,特别是对于经常发展的大型集群。处理此问题的方法是使用consistent hashing,其中每个分区都经过哈希处理,主要和 n 备份。然后,使用一致性散列,只有在添加/删除节点时才必须重新平衡相邻节点。有关此类分布式系统的更多信息,请阅读Dynamo paper。