什么是虚拟节点.以及它在Cassandra分区过程中的帮助

Sar*_*kar 12 cassandra

我知道我们可以使用Cassandra的虚拟节点工具,这样我们就可以防止将令牌(开始令牌)分配给集群的不同节点的额外开销.而不是我们使用num token及其默认值256.
这些虚拟节点以何种方式在分区方面有所不同?Meas Cassandra是否为特定节点设置/分配令牌范围(最大和最小令牌)?

Aar*_*ron 25

什么是虚拟节点?

在Cassandra 1.2之前,每个节点都被分配到特定的令牌范围.现在,每个节点都可以支持多个非连续的令牌范围.它不是一个节点负责一个大范围的令牌,而是负责许多较小的范围.以这种方式,一个物理节点基本上托管许多较小的"虚拟"节点.

这些虚拟节点以何种方式在分区方面有所不同?

请考虑此文档中的图像:如何跨群集分布数据(使用虚拟节点).在每个物理节点上具有许多较小的令牌范围(节点)允许更均匀的数据分布.将物理节点添加到群集时,这一点很明显,因为不再需要重新平衡(手动重新分配令牌范围).正如虚拟节点文档所述,新节点"承担来自集群中其他节点的偶数部分数据的责任".

Cassandra正在为特定节点设置/分配令牌范围(最大和最小令牌)?

是的,Cassandra预先确定了每个虚拟节点的大小.但是,您可以控制分配给每个物理节点的虚拟节点数.假设您的物理节点都配置为默认的256个虚拟节点.如果添加的新计算机的资源多于当前节点,并且您希望该计算机处理更多负载,则可以将其配置为允许384个虚拟节点.同样,可以将具有较少资源的机器配置为支持较少数量的虚拟节点.