CAP定理和BASE理论
CAP定理
传统事务强调ACID特性,即必须要保证一个事务具有原子性、一致性、隔离性和持久性。传统事务一般都是在单机系统中实现的,所以通过一些调度机制很容易实现完整的ACID特性,分布式系统则不一样。
CAP定理说明:
在分布式系统中,一致性、可用性和分区容错性只能满足其中的两个。
现在开始,用分布式系统的角度来思考,你的系统并不运行在一台单体设备上,而是拆分成多种服务,运行在很多台机器上,一些提供相同服务的机器可能组成一个分区,它们处在一个子网中,而你的分布式系统就是由很多分区组成。
一致性
一致性即你在一个机器上的执行的修改,能反映到另一台机器上。
如果你在一台机器上修改了数据,然后在系统中任何机器上都能获得这个最新版本,那么你的系统具有强一致性。
可用性
可用性是指对于用户的任何请求,系统总能在特定的时间内给出响应。
不同的应用对于上面所说的这个“特定的时间”有不同的预期。
也就是说,尽管系统中有部分设备宕机,系统整体依然是可用的。
分区容错性
系统中会出现不同的分区,它们处在不同的子网,通过网络来进行联通,这时如果网络出现故障导致某些分区之间无法联通了,系统就可能无法正常工作。
分区容错性是指在遇到网络故障时,系统依然能向外界提供满足一致性和可用性的服务。
总结
CAP定理说明了在一个分布式系统中,一致性、可用性和分区容错性无法同时满足,你必须根据需求合理的将天赋点分配到这三种特性上。
一般来说,分区容错性(P)是必须需要的,所以只剩下在一致性(C)和可用性(A)之间进行权衡了,下面要说的BASE理论就是帮助在二者之间进行权衡的理论。
BASE理论
BASE理论是三个名词的缩写:
- 基本可用:Basically Available
- 弱状态:Soft state
- 最终一致性:Eventually consistent
从名字就能看出,它是在可用性和一致性之间做出了一些权衡
基本可用
即允许系统在出现故障时损失部分可用性,但绝不能进入不可用的状态
- 响应时间上的损失
- 功能上的损失
弱状态
允许系统中的数据具有中间状态,即允许在不同节点的数据副本间进行同步时存在延时。
最终一致性
一个机器对数据的修改可能没法立即反应到其它机器上,但最终一致性保证在经过一段时间窗口后,该数据的修改一定会反映到其它机器上。
总结
BASE理论就是让你根据自己的业务需求,在可用性和一致性之间分配天赋点。