1.分布式环境下的数据一致性
在分布式环境下 机器越多,就难以保证各个机器之间的数据都是一样的,各个节点的机器总会因为 机器故障/网络延迟/处理能力不同 等原因 导致同一份数据,在不同的机器中,很难达到一致的情况。
2.CAP理论
CAP理论 即 C 一致性 A 可用性 P 分区容错性
一致性是指,一个集群中N台机器的数据都是一样的。
可用性 是指, 这个集群可以正常对外提供服务的能力
分区容错性,比如说这个集群中 ,某个机器挂了,对整个集群的影响程度。
很容易就可以发现,这三个标准,无法同时满足。
比如说要保证一致性,那么集群的机器数量越多,相同的一份的数据,写入到这个集群中,所需要的时间就越多。一份数据写入到一台机器成功,跟保证一条数据写入到100台机器都成功,所需要的时间差异是巨大的。 如果非要保证强一致性,那么就会影响可用性,也就是 这100台机器都写入成功之前,不允许该集群对外提供服务,因为如果对外提供服务,就可能会让外界获取到不一致的数据。
比如说 数据a同步到了第87台数据,然后用户读的是第99台的数据,因为第99台机器没有完成数据的写入,所以用户读不到,会认为该数据不存在于这个集群中。
因此要如果保证强一致性,必定会影响可用性。
同理,如果要保证可用性,就必然影响一致性,可用性程度越高,一致性就越弱。
分区容错性越强,说明某个机器挂了对这个集群的影响越小,说明这个集群的机器数量就越多
,机器越多,如果要保证强一致性,可用性就受影响,如果要保可用性,一致性就越弱。
3.BASE理论
业内有人根据CAP理论提出了BASE理论,这是一个均衡的结果。
BASE理论是指 ,BA 基本可用 S 软状态 E 最终一致性
基本可用,是指当故障发生时候,服务可以降级 限流等,但是系统本身必须是可用的 ,对应分布容错性。
软状态 就是允许一份数据存在中间状态,允许数据在不同机器之间存在同步延时
最终一致性 系统中所有数据,经过一段时间之后,最终能达成一致。
4.强一致性 二阶段提交/三阶段提交
分布式事务