分布式理论基础------CAP理论介绍及其性质

一.什么是分布式系统

在这里插入图片描述

分布式系统是若干独立计算机的集合,这计算机对用户来说就像单个相关系统。

在分布式系统中:

  1. 应用可以按业务类型拆分成多个应用,再按结构分成接口层、服务层;我们也可以按访问入口分,如移动端、PC端等定义不同的接口应用;

  2. 数据库可以按业务类型拆分成多个实例,还可以对单表进行分库分表;

  3. 增加分布式缓存、搜索、文件、消息队列、非关系型数据库等中间件;

很明显,分布式系统可以解决集中式不便扩展的弊端,我们可以很方便的在任何一个环节扩展应用,就算一个应用出现问题也不会影响到别的应用。


二.CAP理论介绍

2000年7月,加州大学伯克利分校的Eric Brewer教授在ACM PODC会议上提出CAP猜想。2年后,麻省理工学院的Seth Gilbert和Nancy Lynch从理论上证明了CAP。之后,CAP理论正式成为分布式计算领域的公认定理。

CAP 理论告诉我们,一个分布式系统不可能同时满足一致性(C:Consistency),可用性(A: Availability)和分区容错性(P:Partition tolerance)这三个基本需求,最多只能同时满足其中的2个。

在这里插入图片描述

  • Consistency:一致性,指数据在多个副本之间能够保持一致的特性(严格的一致性)
    • 从客户端来看,一致性主要指的是多并发访问时更新过的数据如何获取的问题。从服务端来看,则是更新如何复制分布到整个系统,以保证数据最终一致。
  • Availability可用性: 指系统提供的服务必须一直处于可用的状态,每次请求都能获取到非错的响应——但是不保证获取的数据为最新数据。
    • 对于一个可用性的分布式系统,每一个非故障的节点必须对每一个请求作出响应。所以,一般我们在衡量一个系统的可用性的时候,都是通过停机时间来计算的。
  • Partition tolerance分区容错性: 分布式系统在遇到任何网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务,除非整个网络环境都发生了故障。
    • 比如现在的分布式系统中有某一个或者几个机器宕掉了,其他剩下的机器还能够正常运转满足系统需求,或者是机器之间有网络异常,将分布式系统分隔未独立的几个部分,各个部分还能维持分布式系统的运作,这样就具有好的分区容错性。

三.CAP理论证明

1.结论:必须满足P

如果不满足分区容错性,最好情况下可以满足C & A,也就是一致性和可用性。此时相当于一个单体应用,跟分布式系统本身的定义有悖。所以一个分布式系统必须满足分区容错性


2.能否同时满足C,A,P?

在这里插入图片描述
我这里有一个分布式系统,有两个分区N1和N2.其中有两个server,分别有数据库D1D2,二者通过网络通信进行数据同步.数据库中有一行数据,姓名小明,年龄20.

在这里插入图片描述

同时满足CAP的情况: 当user1发出请求修改小明的年龄,此时成功改为21.但是由于节点之间网络故障问题,无法及时同步给D2数据库。所以User2在请求时能否及时拿到21这个数据呢?这是不可能的,所以需要在可用性和一致性中取舍。


如果选择可用性:

  • 每次请求都能获取到非错的响应——但是不保证获取的数据为最新数据。也就是拿到了20这个旧数据

如果选择一致性:

  • 那就需要等到网络恢复,然后数据库数据进行同步,再拿到21这个新数据。

四.总结

AP还是CP,需要根据业务场景来判断

比如前几年支付宝光缆被挖断的事件,在网络出现故障的时候,支付宝就在可用性和数据一致性之间选择了数据一致性,用户感受到的是支付宝系统长时间宕机,但是其实背后是无数的工程师在恢复数据,保证数数据的一致性。

对于其他场景,比较普遍的做法是选择可用性和分区容错性,舍弃强一致性,退而求其次使用最终一致性来保证数据的安全。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值