面试题答案
一键面试1. 写策略参数分析
- w参数:
- 含义:指定写操作需要确认的副本集成员数。例如
w=1
,表示只需要主节点确认写入成功;w=majority
,表示需要大多数节点(超过一半的投票节点)确认写入成功。 - 优点:
w=1
写入性能高,因为只需要主节点确认,不需要等待其他节点同步。适用于对数据一致性要求不高,更注重写入速度的场景。w=majority
能保证较高的数据一致性,因为多数节点确认写入,即使主节点故障,数据也不会丢失。
- 缺点:
w=1
数据一致性低,若主节点在数据同步到其他节点前故障,可能丢失数据。w=majority
写入性能相对w=1
较低,因为需要等待多数节点确认。
- 含义:指定写操作需要确认的副本集成员数。例如
- j参数:
- 含义:表示是否等待写入操作持久化到磁盘日志(journal)中。
j=true
表示等待持久化。 - 优点:保证数据的持久性,即使系统崩溃,已持久化到journal的数据不会丢失。
- 缺点:增加了写入操作的时间,降低了写入性能。
- 含义:表示是否等待写入操作持久化到磁盘日志(journal)中。
- wtimeout参数:
- 含义:设置等待写操作确认的超时时间(单位为毫秒)。例如
wtimeout=5000
表示等待5秒。 - 优点:防止写操作长时间等待,避免因某些节点故障或网络问题导致写操作无限期阻塞。
- 缺点:若设置的超时时间过短,可能导致写操作因超时而失败,影响业务连续性。
- 含义:设置等待写操作确认的超时时间(单位为毫秒)。例如
2. 建议配置及理由
- 建议配置:
w=majority, j=true, wtimeout=10000
。 - 理由:
- 数据一致性:
w=majority
确保了数据写入到大多数节点,提供了较高的数据一致性,符合订单系统对数据一致性较高的要求。即使主节点出现故障,数据也不会丢失,因为多数节点都有该数据的副本。 - 数据持久性:
j=true
保证了写入的数据持久化到磁盘日志中,进一步确保数据不会因系统崩溃等意外情况丢失,增强了数据的可靠性。 - 写入性能兼顾:
wtimeout=10000
设置了10秒的超时时间,在等待多数节点确认和数据持久化的过程中,若出现网络问题或节点故障,不会让写操作无限期等待。10秒的时间相对合理,既给予了系统足够的时间完成写操作确认,又不会因超时时间过长而长时间阻塞业务,在一定程度上兼顾了写入性能。同时,虽然j=true
会降低一些写入性能,但结合wtimeout
和w=majority
,在保证数据一致性和持久性的前提下,对整体写入性能的影响在可接受范围内,适合分布式电商订单系统的需求。
- 数据一致性: