面试题答案
一键面试主节点(Primary)
- 持久性配置:主节点负责处理所有写入操作。写入操作在主节点上完成后,会通过复制 oplog(操作日志)将这些更改传播到从节点。主节点采用的持久性机制确保写入操作在提交到 oplog 之前,先写入到 journal 文件中(默认开启 journaling),这提供了崩溃恢复能力,保证即使系统崩溃,数据也不会丢失。
- 对数据存储和复制的影响:作为写入的唯一入口,主节点的持久性配置直接决定了数据的一致性和耐久性。写入操作在主节点确认成功后,才会开始向从节点复制,确保从节点的数据与主节点保持一致。但如果主节点发生故障,可能会导致短暂的写入不可用,直到新的主节点选举产生。
从节点(Secondary)
- 持久性配置:从节点通过复制主节点的 oplog 来保持数据同步。从节点同样会将接收到的 oplog 应用到自身的数据存储中,并使用类似的 journaling 机制来保证数据的持久性。然而,从节点不会主动处理写入操作(除非在某些特殊配置下,如进行局部写入用于特定目的,但这不是常规操作)。
- 对数据存储和复制的影响:从节点的持久性确保了数据副本的可靠性。它们为系统提供了冗余,提高了数据的可用性。从节点可以分担读操作的负载,减轻主节点的压力。但由于从节点依赖主节点的 oplog 复制,可能会存在一定的数据延迟,特别是在网络延迟较高或主节点负载过重的情况下。
仲裁节点(Arbiter)
- 持久性配置:仲裁节点不存储数据,它的主要作用是参与选举过程,决定哪个从节点将晋升为新的主节点。仲裁节点只维护少量的元数据,用于跟踪集群的状态。它不需要像主节点和从节点那样的复杂持久性配置,因为它不涉及数据的存储和复制。
- 对数据存储和复制的影响:仲裁节点虽然不直接影响数据的存储和复制,但在保证集群高可用性方面起着关键作用。通过参与选举,它确保了在主节点故障时,集群能够快速、准确地选举出新的主节点,从而继续维持数据的写入和复制功能。如果仲裁节点出现故障,只要还有足够的投票节点(主节点和从节点),集群仍然可以正常运行,但可能会影响选举的效率。