开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第11天,点击查看活动详情
分布式理论
CAP 理论
- C:数据强一致性(Consistent)
- A:服务高可用性(Availability)
- P:网络分区容忍(Partition tolerance)
在分布式系统设计中存在数据强一致性和服务高可用性两个质量指标,以及一个不可避免的网络分区缺陷,网络分区对应的网络分区容忍。
在分布式系统中,数据的强一致性和服务的高可用性是不能同时存在的。
由于数据存储主节点和多个备份节点是分布在不同机器节点上的,所以在数据存储的主节点写入数据后,需要通过网络来将新数据传输到各个备份节点。在备份节点未获得新数据之前,主节点和备份节点的数据是不一致的,此时若需要保证数据的强一致性,则需要容忍服务的不可用,即此时请求无法访问该数据。
反过来分析,如果需要保证服务的高可用性,则此时客户端可选择任一节点访问数据,而该节点的数据有可能是新数据,也可能是未完成同步的旧数据,不能保证数据的强一致性。
网络分区容忍
由于网络的不稳定性,网络分区是不可避免的,即两台机器之间可能出现无法通信的情况。在出现网络分区时,要根据实际业务特点,是需要保证数据的强一致性,还是保证服务的高可用性。
BASE 理论
BASE 理论是指数据强一致性和服务高可用相互让步,取一个折中的解决方案。通过牺牲数据强一致性来获取服务的基本可用,即允许数据在一段时间内是不一致的,但最终会达到一致性。
-
BA:基本可用(Basically Available)
当分布式系统出现网络分区时,服务保持基本可用,服务质量会存在损失。
-
S:软状态(Soft State)
允许在有限的时间段内,数据存在中间状态,即分布式系统中的各个数据节点可在有限的时间段存在差异。
-
E:最终一致性(Eventual Consistently)
数据节点可在有限时间段存在数据不一致的问题,但各个数据节点之后需要达到最终一致性。