面试题答案
一键面试不同网络拓扑结构对MongoDB副本集的影响
- 星型拓扑
- 性能:中心节点成为数据交换枢纽,若中心节点性能强大,数据传输效率较高。但中心节点易成为性能瓶颈,当负载过重时,会影响整个副本集性能。例如,大量客户端请求通过中心节点与副本集交互,中心节点网络带宽不足会导致数据传输延迟。
- 数据一致性:数据集中流向中心节点再分发,一致性较易维护。因为中心节点可统一协调数据同步,减少因多路径传输可能产生的冲突。比如,主节点将数据变更先传给中心节点,再由中心节点分发到各副本,只要中心节点处理正常,数据一致性有保障。
- 故障恢复能力:中心节点故障影响巨大,可能导致整个副本集通信中断。虽然副本集自身有故障转移机制,但依赖中心节点的网络连接恢复。例如中心节点网络设备故障,需修复后副本集才能恢复正常通信。
- 网状拓扑
- 性能:多路径传输数据,理论上可提高数据传输的并行度,提升整体性能。节点间可直接通信,减少数据传输跳数。如多个节点同时更新数据,可快速在副本集内传播。
- 数据一致性:由于多路径传输,可能出现数据同步冲突,一致性维护相对复杂。不同路径数据传输延迟不同,可能导致部分节点数据更新先后顺序不一致。例如,两个节点同时向不同路径的多个节点发送更新,可能出现某些节点先接收A更新,某些先接收B更新的情况。
- 故障恢复能力:部分节点故障不影响整体通信,其他节点可通过其他路径继续保持联系和数据同步,故障恢复能力较强。如某一节点网络故障,数据可通过其他路径传输到副本集其他节点。
根据实际业务场景选择合适拓扑结构
- 读多写少,对一致性要求极高:适合星型拓扑。如金融交易记录查询业务,交易记录写入后很少修改,主要是大量查询操作。使用星型拓扑,通过中心节点统一分发查询请求到副本集节点,可保证数据一致性,中心节点可缓存部分热点数据提高查询性能。即使偶尔有写入操作,中心节点也能很好协调数据同步。
- 读写频繁,要求高并发和高可用性:网状拓扑更合适。如社交平台,用户频繁发布动态(写操作),同时大量用户浏览动态(读操作)。网状拓扑多路径通信可满足高并发读写需求,部分节点故障不影响整体服务,保证服务可用性。例如,用户A发布动态,可通过多条路径快速同步到各副本节点,其他用户能及时读取。