我知道我们可以使用Cassandra的虚拟节点工具,这样我们就可以防止将令牌(开始令牌)分配给集群的不同节点的额外开销。而不是我们使用num标记及其默认值256
这些虚拟节点以何种方式在分区方面有所不同? Meas Cassandra正在为特定节点设置/分配令牌范围(最大和最小令牌)?
答案 0 :(得分:25)
什么是虚拟节点?
在Cassandra 1.2之前,每个节点都被分配到特定的令牌范围。现在,每个节点都可以支持多个非连续的令牌范围。它不是一个节点负责一个大范围的令牌,而是负责许多较小的范围。通过这种方式,一个物理节点基本上托管了许多较小的虚拟"节点
这些虚拟节点在分区方面有何不同?
考虑此文档中的图片:How data is distributed across a cluster (using virtual nodes)。在每个物理节点上具有许多较小的令牌范围(节点)允许更均匀的数据分布。将物理节点添加到群集时,这一点很明显,因为不再需要重新平衡(手动重新分配令牌范围)。作为Virtual Node documentation状态,新节点"承担来自集群中其他节点的偶数部分数据的责任。"
Cassandra正在为特定节点设置/分配令牌范围(最大和最小令牌)?
是的,Cassandra预先确定了每个虚拟节点的大小。但是,您可以控制分配给每个物理节点的虚拟节点数。假设您的物理节点都配置为默认的256个虚拟节点。如果添加的新计算机的资源多于当前节点,并且您希望该计算机处理更多负载,则可以将其配置为允许384个虚拟节点。同样,可以将资源较少的计算机配置为支持较少数量的虚拟节点。