面试题答案
一键面试- 数据传播方式:
- Gossip协议:Cassandra使用Gossip协议在节点间传播信息。每个节点会定期向其他随机选择的节点发送自身状态信息(包括节点的基本信息、负载、数据分布等)以及它所知道的其他节点的状态摘要。当一个节点的信息发生变化(如新增、移除节点,或节点负载发生较大变化),该节点会将这些改变通过Gossip传播出去。其他节点接收到这些更新后,会将其融入自己的状态信息,并继续通过Gossip传播给其他节点。这样,整个集群中的节点就可以逐步知晓节点信息的变化。
- 一致性协议的应用:
- 读写一致性级别:
- Cassandra提供了多种读写一致性级别,如ONE、TWO、THREE、QUORUM、ALL等。在节点信息发生变化时,通过设置合适的读写一致性级别来保证数据一致性。例如,当使用QUORUM一致性级别时,读操作需要从超过半数的副本节点获取数据,写操作需要写入超过半数的副本节点。这样可以确保在节点信息变化(如部分节点故障或新节点加入)时,数据的读写操作能从足够多的副本节点获取或写入数据,从而保证数据的一致性。
- ** hinted handoff**:
- 当某个节点发生故障无法接收写操作时,Cassandra会使用hinted handoff机制。协调者节点会将本该发送给故障节点的数据暂时存储在本地,并记录相关元数据。当故障节点恢复后,协调者节点会将这些暂存的数据发送给该节点,确保数据副本的一致性。在节点信息变化过程中(如节点临时故障又恢复),hinted handoff机制有助于维护集群的数据一致性。
- Anti - entropy:
- Cassandra使用Anti - entropy机制来定期检查和修复节点间数据的不一致。主要通过Merkle树来实现。每个节点为其数据构建Merkle树,Merkle树是一种哈希树结构,通过对数据块进行哈希运算构建。当两个节点需要同步数据时,它们会比较各自Merkle树的根哈希值。如果根哈希值不同,说明数据存在不一致,然后通过递归比较子树的哈希值,定位到具体不一致的数据块,并进行数据同步。在节点信息变化后,Anti - entropy机制可以保证节点间数据最终达到一致状态。
- 读写一致性级别: