面试题答案
一键面试- 数据丢失
- 写操作时:如果在写操作过程中关闭节点,且该写操作尚未完全同步到所有副本分片,那么这部分未同步的数据可能丢失。例如,主分片接收到新数据写入,开始向副本分片同步,但在同步完成前节点关闭,副本分片可能未接收到完整数据,当该节点重启或集群重新分配分片时,这部分未同步的数据就会丢失。
- 数据不一致
- 读操作时:关闭节点可能导致集群状态变化,新的主分片选举等情况。如果在选举过程中,客户端从不同分片读取数据,可能会读到旧版本或不一致的数据。比如,原主分片在关闭前处理了部分写操作但未完全同步给副本,新主分片选举后,客户端从旧主分片(已关闭节点上的分片)的副本读取到旧数据,而从新主分片读取到新数据,就出现了数据不一致的情况。
- 脑裂问题引发的数据不一致
- 关闭节点可能触发脑裂现象,即集群在短暂时间内分裂成两个或多个相互独立的部分,每个部分都认为自己是主集群。不同部分的节点可能会独立接收读写操作,导致数据不一致。例如,一部分节点(假设包含原主分片所在节点)继续处理写操作,而另一部分节点(新选举出主分片的节点)也处理写操作,最终合并集群时,就会出现数据冲突和不一致。