Skip to content

面试速答(先看这里)

**一句话结论:**也就是说,同一个时刻,只有一个节点对外提供服务的,这就谈不上P了,没啥分区容错性可言。

60秒标准回答:

CAP理论,是描述分布式系统的,即在一个分布式系统中,可用性、一致性和分区容错性不能同时满足

但是, 我们日常使用的MySQL,虽然也是有多个节点的,但是大多数情况下都是主备的,即只有一个主节点对外提供服务,当主节点挂了之后,备节点顶上来

也就是说,同一个时刻,只有一个节点对外提供服务的,这就谈不上P了,没啥分区容错性可言

**答题顺序:**结论 → 原理/机制 → 关键流程 → 场景与取舍 → 易错点

回答主线:

  • **要点1:**CAP理论,是描述分布式系统的,即在一个分布式系统中,可用性、一致性和分区容错性不能同时满足。
  • **要点2:**但是, 我们日常使用的MySQL,虽然也是有多个节点的,但是大多数情况下都是主备的,即只有一个主节点对外提供服务,当主节点挂了之后,备节点顶上来。
  • **要点3:**因此, 我们可以认为,MySQL 是一个 AC 的数据库。
  • **要点4:**但是,MySQL在使用的时候,还有一种做法,那就是 读写分离 ,即在主库上操作写,在从读库上进行读,这时候主库和从库都是对外提供服务的。
  • **要点5:**因为在出现网络延迟的时候,MySQL的从节点一样可以正常响应请求,只不过返回的数据可能是旧数据,这就是典型的优先保证了可用性,而牺牲了一致性。

**记忆锚点:**MySQL → 也不影响主节点的一致性 → 点的延迟不会影响一致性 → 典型的优先保证了可用性 → 而牺牲了一致性 → 而在可用性

易错提醒:

  • CAP理论,是描述分布式系统的,即在一个分布式系统中,可用性、一致性和分区容错性不能同时满足。

追问准备:

  • 围绕「MySQL」:底层原理是什么?使用时有哪些边界和常见坑?
  • 围绕「也不影响主节点的一致性」:底层原理是什么?使用时有哪些边界和常见坑?
  • 围绕「点的延迟不会影响一致性」:底层原理是什么?使用时有哪些边界和常见坑?
  • 如果线上出现异常,你会如何定位、验证并规避?

典型回答 ​

CAP理论,是描述分布式系统的,即在一个分布式系统中,可用性、一致性和分区容错性不能同时满足。

📄 ✅什么是CAP理论,为什么不能同时满足?

打开文档:✅什么是CAP理论,为什么不能同时满足?

但是,我们日常使用的MySQL,虽然也是有多个节点的,但是大多数情况下都是主备的,即只有一个主节点对外提供服务,当主节点挂了之后,备节点顶上来。

也就是说,同一个时刻,只有一个节点对外提供服务的,这就谈不上P了,没啥分区容错性可言。

而在可用性(A)及一致性(C)方面,因为只有一个节点对外提供服务,所以自然可用性和一致性都是可以保障的。(即使发生了主从延迟,也不影响主节点的一致性或者可用性)

因此,我们可以认为,MySQL 是一个 AC 的数据库。即从节点的延迟不会影响一致性或可用性。

但是,MySQL在使用的时候,还有一种做法,那就是读写分离,即在主库上操作写,在从读库上进行读,这时候主库和从库都是对外提供服务的。这时候的MySQL就从一个AC的系统,变成了一个AP的系统了。

因为在出现网络延迟的时候,MySQL的从节点一样可以正常响应请求,只不过返回的数据可能是旧数据,这就是典型的优先保证了可用性,而牺牲了一致性。

所以,总结一下就是,MySQL在默认情况下,是一个AC的数据库系统,在读写分离的情况下,是一个AP的数据库系统。