主题
面试速答(先看这里)
**一句话结论:**也就是说,同一个时刻,只有一个节点对外提供服务的,这就谈不上P了,没啥分区容错性可言。
60秒标准回答:
CAP理论,是描述分布式系统的,即在一个分布式系统中,可用性、一致性和分区容错性不能同时满足
但是, 我们日常使用的MySQL,虽然也是有多个节点的,但是大多数情况下都是主备的,即只有一个主节点对外提供服务,当主节点挂了之后,备节点顶上来
也就是说,同一个时刻,只有一个节点对外提供服务的,这就谈不上P了,没啥分区容错性可言
**答题顺序:**结论 → 原理/机制 → 关键流程 → 场景与取舍 → 易错点
回答主线:
- **要点1:**CAP理论,是描述分布式系统的,即在一个分布式系统中,可用性、一致性和分区容错性不能同时满足。
- **要点2:**但是, 我们日常使用的MySQL,虽然也是有多个节点的,但是大多数情况下都是主备的,即只有一个主节点对外提供服务,当主节点挂了之后,备节点顶上来。
- **要点3:**因此, 我们可以认为,MySQL 是一个 AC 的数据库。
- **要点4:**但是,MySQL在使用的时候,还有一种做法,那就是 读写分离 ,即在主库上操作写,在从读库上进行读,这时候主库和从库都是对外提供服务的。
- **要点5:**因为在出现网络延迟的时候,MySQL的从节点一样可以正常响应请求,只不过返回的数据可能是旧数据,这就是典型的优先保证了可用性,而牺牲了一致性。
**记忆锚点:**MySQL → 也不影响主节点的一致性 → 点的延迟不会影响一致性 → 典型的优先保证了可用性 → 而牺牲了一致性 → 而在可用性
易错提醒:
- CAP理论,是描述分布式系统的,即在一个分布式系统中,可用性、一致性和分区容错性不能同时满足。
追问准备:
- 围绕「MySQL」:底层原理是什么?使用时有哪些边界和常见坑?
- 围绕「也不影响主节点的一致性」:底层原理是什么?使用时有哪些边界和常见坑?
- 围绕「点的延迟不会影响一致性」:底层原理是什么?使用时有哪些边界和常见坑?
- 如果线上出现异常,你会如何定位、验证并规避?
典型回答
CAP理论,是描述分布式系统的,即在一个分布式系统中,可用性、一致性和分区容错性不能同时满足。
但是,我们日常使用的MySQL,虽然也是有多个节点的,但是大多数情况下都是主备的,即只有一个主节点对外提供服务,当主节点挂了之后,备节点顶上来。
也就是说,同一个时刻,只有一个节点对外提供服务的,这就谈不上P了,没啥分区容错性可言。
而在可用性(A)及一致性(C)方面,因为只有一个节点对外提供服务,所以自然可用性和一致性都是可以保障的。(即使发生了主从延迟,也不影响主节点的一致性或者可用性)
因此,我们可以认为,MySQL 是一个 AC 的数据库。即从节点的延迟不会影响一致性或可用性。
但是,MySQL在使用的时候,还有一种做法,那就是读写分离,即在主库上操作写,在从读库上进行读,这时候主库和从库都是对外提供服务的。这时候的MySQL就从一个AC的系统,变成了一个AP的系统了。
因为在出现网络延迟的时候,MySQL的从节点一样可以正常响应请求,只不过返回的数据可能是旧数据,这就是典型的优先保证了可用性,而牺牲了一致性。
所以,总结一下就是,MySQL在默认情况下,是一个AC的数据库系统,在读写分离的情况下,是一个AP的数据库系统。