CAP、BASE理论

一、CAP

一个分布式架构最多只能同时满足一致性、可用性和分区容错性这三项中的两项。

C:Consistency

 一致性:“all nodes see the same data at the same time”,即所有节点在同一时间的数据完全一致。

  1. 强一致性。对于关系型数据库,要求更新过的数据,后续的访问都能看到。
  2. 弱一致性。如果能够容忍后续的部分或者全部访问不到,则是弱一致性。
  3. 最终一致性。如果经过一段时间后能访问到更新后的数据,则是最终一致性。

A:Availability

可用性:“Reads and writes always succeed”,即服务在正常的响应时间内一直可用。好的可用性主要是指系统能够很好地为用户服务,不出现用户操作失败或者访问超时等用户体验不好的情况。

P:Partiton tolerance

分区容错性:“the system continues to operate despite arbitrary message loss or failure of part of the system”,即分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性或可用性的服务。

例如:有两个节点N1和N2,节点N1和N2部署在不同的服务器上,N1和N2之间网络可以连通。

在满足一致性的情况下,N1和N2的数据是一样的。

在满足可用性的情况下,用户不管是请求N1还是请求N2,都能立即得到相应。

在满足分区容错性的情况下,N1和N2有任何一方宕机或者网络不通,都不会影响N1和N2彼此之间的正常运作。

然而在分布式架构中这只是一种理想的情景。分布式系统和单机系统最大的区别在于网络,假设现在N1和N2之间的网络断开了,我们要支持这种网络异常,相当于要满足分区容错性。能不能同时满足一致性和可用性呢?

N1和N2之间的网络断开了,有用户向N1发送更新数据的请求,N1更新成功,由于N1和N2的网络断开了,N1和N2之间就无法进行数据的同步了,N1和N2的数据是不同的。如果此时用户向N2请求数据,应该怎么办呢?有两种情况:

1、选择可用性,牺牲一致性,N2返回旧数据。

2、选择一致性,牺牲可用性,N2阻塞直至网络连接恢复,N1和N2完成同步之后再给客户响应最新的值。

以上,说明了分布式架构中,在满足分区容错性的情况下,只能在一致性和可用性中的一种。

CP还是AP,如何权衡

对于多数大型互联网应用,主机众多、部署分散,而且现在的集群规模越来越大,所以节点故障、网络故障是常态,而且要保证服务可用性能达到N个9,即保障AP舍弃C。

而对于银行业务,设计钱财不能有一丝让步的场景,必须保障C,网络发生故障宁可停止服务,即保障CP舍弃A。

需依据自己的场景定夺,合适的才是最好的。

二、BASE理论

BASE理论是对CAP理论的延伸,核心思想是即使无法做到强一致性,但应用应该采用适合的方式达到最终一致性。

BASE理论是指基本可用(Basically Available)、软状态(Softe state)、最终一致性(Eventual Consistency)。

基本可用(Basically Available)

基本可用是指分布式系统在出现故障的时候,允许损失部分可用性,即保证核心可用。电商大促时,为了应对访问量激增,部分用户可能会被引导到降级页面,服务层也可能只提供降级服务。这就是损失部分可用性的表现。

软状态(Softe state)

软状态是指允许系统存在中间状态,而该中间状态不会影响系统整体可用性。分布式存储中一般一份数据至少会有三个副本,允许不同节点间副本同步的延时,就是软状态的体现。

最终一致性(Eventual Consistency)

最终一致性是指系统中所有数据副本经过一段时间后,最终能够达到一致的状态。弱一致性和强一致性相反,最终一致性是弱一致性的一种特殊情况。

发现一篇很好的文章

分布式系统架构系列讲解一(分布式一致性 1):CAP理论_cap 一致性-CSDN博客

  • 23
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值