集群中的复制数据是否会在每个系统中使用相同的内存space?

Will replicated data in cluster use same memory space in every system?

我只是想了解分布式系统的机制及其数据存储机制。大多数分布式系统有"replicated data within the cluster to prevent data loss".

但我想了解的是,假设我有一个由 3 个系统组成的集群,每个系统的内存为 1TB,并且主节点正在复制其他 2 个节点中的数据。并假设如果主节点使用 500GB 的内存,那么其他 2 个节点应该使用相同数量的内存来复制数据。

如果这是真的,那么在那种情况下,我应该如何增加集群的内存容量。因为在这种情况下,它会保存相同数量的数据(即最大 1TB),即使在内存容量远大于它所保存数据的集群上也是如此。

没错。在集群中扩展内存的方式是对数据进行分区。因此,如果您将另一个节点添加到您的三节点集群中,那么您将数据集拆分为四个分区(通常按键)并在三个节点上复制每个分区。如果添加另一个节点,请添加另一个分区。

不过,这在分布式系统中造成了一个众所周知的问题。当您将节点添加到具有按键分区的数据集的集群时,整个数据集必须重新分区和重新平衡。这可能是一个不切实际的昂贵操作,特别是对于经常发展的大型集群。处理这个问题的方法是用consistent hashing where each partition is hashed to a primary and n backups. Using consistent hashing, then, only neighboring nodes have to be rebalanced when a node is added/removed. For more information on this type of distributed system read the Dynamo paper.