Loading

CAP定理和BASE理论

CAP定理

传统事务强调ACID特性,即必须要保证一个事务具有原子性、一致性、隔离性和持久性。传统事务一般都是在单机系统中实现的,所以通过一些调度机制很容易实现完整的ACID特性,分布式系统则不一样。

CAP定理说明:

在分布式系统中,一致性、可用性和分区容错性只能满足其中的两个。

现在开始,用分布式系统的角度来思考,你的系统并不运行在一台单体设备上,而是拆分成多种服务,运行在很多台机器上,一些提供相同服务的机器可能组成一个分区,它们处在一个子网中,而你的分布式系统就是由很多分区组成。

一致性

一致性即你在一个机器上的执行的修改,能反映到另一台机器上

如果你在一台机器上修改了数据,然后在系统中任何机器上都能获得这个最新版本,那么你的系统具有强一致性

可用性

可用性是指对于用户的任何请求,系统总能在特定的时间内给出响应

不同的应用对于上面所说的这个“特定的时间”有不同的预期。

也就是说,尽管系统中有部分设备宕机,系统整体依然是可用的。

分区容错性

系统中会出现不同的分区,它们处在不同的子网,通过网络来进行联通,这时如果网络出现故障导致某些分区之间无法联通了,系统就可能无法正常工作。

分区容错性是指在遇到网络故障时,系统依然能向外界提供满足一致性和可用性的服务

总结

CAP定理说明了在一个分布式系统中,一致性、可用性和分区容错性无法同时满足,你必须根据需求合理的将天赋点分配到这三种特性上。

一般来说,分区容错性(P)是必须需要的,所以只剩下在一致性(C)和可用性(A)之间进行权衡了,下面要说的BASE理论就是帮助在二者之间进行权衡的理论。

BASE理论

BASE理论是三个名词的缩写:

  1. 基本可用:Basically Available
  2. 弱状态:Soft state
  3. 最终一致性:Eventually consistent

从名字就能看出,它是在可用性和一致性之间做出了一些权衡

基本可用

即允许系统在出现故障时损失部分可用性,但绝不能进入不可用的状态

  1. 响应时间上的损失
  2. 功能上的损失

弱状态

允许系统中的数据具有中间状态,即允许在不同节点的数据副本间进行同步时存在延时

最终一致性

一个机器对数据的修改可能没法立即反应到其它机器上,但最终一致性保证在经过一段时间窗口后,该数据的修改一定会反映到其它机器上

总结

BASE理论就是让你根据自己的业务需求,在可用性和一致性之间分配天赋点。

posted @ 2022-07-07 09:36  yudoge  阅读(25)  评论(0编辑  收藏  举报