CAP定理理解

CAP定理

  • 1998年,加州大学的计算机科学家 Eric Brewer 提出,分布式系统有三个指标:
    • Consistency
    • Availability
    • Partition tolerance
  • CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。
  • 一致性(Consistency):指更新操作成功并返回客户端完成后,所有节点在同一时间的数据完全一致
    • 强一致性:要不一起成功,要不一起失败
    • 弱一致性
    • 顺序一致性
  • 可用性(Availability):可用性指(Reads and writes always succeed),即服务一直可用,而且是正常响应时间
    • 例如:阿里的服务器分布在全球各个地方,甚至在海底都有(灾备),除非同时攻击所有节点,才能破坏网络
  • 分区性(Partition tolerance):分区容错性指(the system continues to operate despite arbitrary message loss or failure of part of the system),即分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。
    • CDN判断用户位置,上海用户挂了,深圳服务器不能完全同步

CAP权衡

应用场景

  • CP 系统 金融级系统
  • AP 系统 保证一直可以用的系统达到:N个9的时间可以用

BASE理论

  • BASE理论是对CAP理论的延伸,思想是即使无法做到强一致性(CAP的一致性就是强一致性),但可以采用适当的采取弱一致性,即最终一致性。
    • 基本可用(Basically Available):基本可用是指分布式系统在出现故障的时候,允许损失部分可用性(例如响应时间、功能上的可用性),允许损失部分可用性,即保证核心可用。电商大促时,为了应对访问量激增,为了保护系统的稳定性,部分消费者可能会被引导到一个降级页面。
    • 软状态(Soft State):软状态是指允许系统存在中间状态,而该中间状态不会影响系统整体可用性。分布式存储中一般一份数据会有多个副本,允许不同副本同步的延时就是软状态的体现。mysql replication的异步复制也是一种体现。
    • 最终一致性)(Envental Consistency):最终一致性是指系统中的所有数据副本经过一定时间后,最终能够达到一致的状态。弱一致性和强一致性相反,最终一致性是弱一致性的一种特殊情况。

最终一致性实践(异地多活)

  • 不同的地方需要写入数据表,不同地方的数据表也需要同步。
    • 当写入User数据时,两边因为同步可看做同时写入自增ID的User对象,上海数据库写入1、2、3,深圳也写入1、2、3,内容不同但ID相同,造成的结果是主主冲突
    • 解决方案是异地双活:上海是单数,深圳是双数,合并即可

  • 为实现异地多活,出现了UUID,但是UUID是字符串影响查询性能,最终出现了分布式ID

ACID和BASE的区别和联系

  • ACID是传统数据库常用的设计理念,追求强一致性模型。BASE支持的是达性分布式系统,提出通过牺牲强一致性获得高可用性。
  • ACID ACID和BASE代表了两种截然相反的涉及哲学,在分布式系统设计的场景中,系统组件对一致性要求是不同的,因此ACID和BASE又会结合使用
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值