目录
事务的4个基本要素–ACID
原子性(Atomicity)
一个事务中的所有操作要么全部成功,要么全部失败;没有中间状态
一致性(Consistency)
如A向B转账100元,要保证A扣除100元,B增加100元
隔离性(Isolate)
同一时间对同一个资源只有1个事务在操作
比如A在从银行卡中取钱,在A操作完成之前,B不可以向这张卡转账;
持久性(Durability)
事务操作结果 要持久化到数据库中,不可以回滚
分布式系统3个核心需求–CAP定理
一致性(Consistency)
- 这里的一致性与数据库ACID中的“一致性”类似,但略有不同:
- ACID中的“一致性”指的是单个事务中的数据一致性;
- 分布式系统的“一致性”指的是 所有(备份)节点在同一时刻数据是一样的
- 对上层应用来说,对所有节点的访问到的数据是一样的
可用性(Availability)
- 指服务正常可用,而且每一个操作都会在一定时间内返回结果
- 不会出现响应超时或者操作失败的情况
- 另一种说法:只要收到用户请求,就必须给予响应,这时候才叫可用。
分区容错性(Parititon Tolerance)
- 大多数分布式系统存在多个子网络,每个子网络就叫做1个分区。分区容错的意思是:区间通信可能失败
- 比如,一台服务器在中国,一台在美国,这就是2个区,他们可能无法通信,这时候就需要分区容错
- 分布式系统都具备分区容错性
任何系统中只能满足CAP其中的2个,三者不可兼得
可以这样理解CAP
- 分布式系统必然具备分区容错性,每个节点(副本)都是一个分区。这时候可用性(A)和一致性(C)是矛盾的:
- 如果选择一致性,那么系统必须在所有节点数据一致之前锁住资源(禁止读写),待各节点数据一致后才可用,这叫CP
- 如果选择可用性,那么节点之间数据可能不一致,从不同节点读取到的结果不一样,违背了一致性,这叫AP
- 单点(无副本/分区)系统,必然满足一致性和可用性,即CA,但不具备分区容错性
BASE理论
BASE,是指Basically Available(基本可用),Soft state(软状态),Eventually
consistency(最终一致性)。
BASE理论是对CAP的一致性和可用性权衡的结果。
Basically Available(基本可用)
- 分布式系统在发生故障时,允许损失部分可用性
- 例如,
- 性能上的损失:正常情况下响应时间为0.5s;当系统发生故障(如部分机房发生故障)时,响应时间增加到1-2s;
* 功能上的损失:业务高峰时,为防止系统奔溃,会把用户请求引导到一个降级页面(显示“服务暂时不可用”等提示信息);
Soft state(软状态)
- 也叫弱状态,与硬状态相对。即,允许数据存在中间状态
- 也就是说,允许不同副本的数据同步存在一定的延时;
Eventually consistency(最终一致性)
- 在一段时间后,所有副本节点的数据是一致的