面试题答案
一键面试基本原理
- 分散负载:Cassandra 将节点范围划分为多个更小的范围,每个虚拟节点负责其中一部分。例如,一个物理节点可能拥有多个虚拟节点,这些虚拟节点分散在整个环(如一致性哈希环)上。当数据到来时,按照数据的分区键计算哈希值,该哈希值会落在某个虚拟节点负责的范围内,进而由对应虚拟节点所在的物理节点来存储和管理数据,这样就避免了数据集中在少数几个物理节点上,实现负载分散。
- 动态分配:当有新节点加入或现有节点离开时,虚拟节点可以更灵活地重新分配负载。新节点加入时,它所携带的虚拟节点会均匀地插入到环中,接管一部分原有节点的负载;节点离开时,其虚拟节点负责的负载会被其他节点的虚拟节点重新吸收,通过这种方式维持整个集群的负载均衡。
优势
- 更好的负载均衡:相比传统的单一节点对应一个范围,虚拟节点使负载在集群中的分布更加均匀。因为每个物理节点有多个虚拟节点分散在环上,降低了数据倾斜的可能性,使得每个物理节点承担的负载相对平均,提高了整体集群的性能和资源利用率。
- 平滑的节点伸缩:在集群扩容(添加节点)或缩容(移除节点)时,虚拟节点能让负载转移过程更平滑。新节点加入时,只需将少量虚拟节点的负载转移过来,对整个系统的影响较小;节点移除时,其负载可以均匀地分散到其他节点的虚拟节点上,减少了对集群性能的冲击,保证服务的稳定性。
- 灵活的资源管理:不同性能的物理节点可以分配不同数量的虚拟节点。性能高的节点可以分配较多虚拟节点,承担更多负载,这样可以根据硬件资源的实际情况进行灵活的资源分配,充分发挥不同硬件的能力,优化整个集群的资源利用效率。