分布式理论----CAP理论与Base理论

打印 上一主题 下一主题

主题 845|帖子 845|积分 2535

CAP 理论

  【1】CAP 理论指出对于一个分布式计算系统来说,不可能同时满足以下三点:
    1)一致性:在分布式环境中,一致性是指数据在多个副本之间是否能够保持一致的特性,等同于所有节点访问同一份最新的数据副本。在一致性的需求下,当一个系统在数据一致的状态下执行更新操作后,应该保证系统的数据仍然处于一致的状态。【指强一致性】
    2)可用性:每次请求都能获取到正确的响应,每一个操作总是能在确定的时间内返回,但是不保证获取的数据为最新数据。

    3)分区容错性:分布式系统在遇到任何网络分区故障的时候,仍然需要能够保证对外提供满足一致性和可用性的服务,除非是整个网络环境都发生了故障。
  【2】一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。
  【3】在这三个基本需求中,最多只能同时满足其中的两项,P 是必须的,因此只能在 CP 和 AP 中选择,zookeeper 保证的是 CP,对比 spring cloud 系统中的注册中心 eureka实现的是 AP。【与其说是三项中选两项,本质上是在C与A之间进行二选一
  【4】分析高可用性与强一致性之间存在违背的地方:
    1.先说说可用性:每次请求都能在限定的时间内获取到正确的响应。
    2.再说强一致性:每次写入的时候,都会在leader(主节点)上先写入,然后同步给其他节点,在此阶段是不对外提供服务的。故而,follower(从节点)越多,其实不可控的时间也就越长。
    3.所以说可用性在强一致性同步数据阶段得不到保障,这就是问题。
  【5】故而市面上常说的CAP理论,其实是最终一致性,可用性,与分区容错性。如zookeeper ,说是CP架构:
    1)Leader接收Client的写请求,广播给其他Follower节点,其他节点将消息加入待写队列,向Leader发送成功消息,过半的Follower同意后,Leader向所有节点发送提交消息,Follower会落实写请求。(并不满足全部节点都写入,只是保证大多数节点的写入。此时系统的各节点数据并不保证完全一致)

    2)每一次写入的时候Leader(写入操作只能由Leader进行)都会有个ZXID,而从节点也会按照ZXID来进行顺序写入,从而最终达到与Leader的数据一致(顺序一致性)。
    3)所以总结起来zookeeper保证的是线性写,顺序读。但是拿到的数据不保证一致。
 
BASE 理论

  【1】BASE 是 Basically Available(基本可用)、Soft-state(软状态) 和 Eventually Consistent(最终一致性) 三个短语的缩写。
    1)基本可用:在分布式系统出现故障,允许损失部分可用性(服务降级、页面降级)。
    2)软状态:允许分布式系统出现中间状态。而且中间状态不影响系统的可用性。这里的中间状态是指不同的 data replication(数据备份节点)之间的数据更新可以出现延时的最终一致性。
    3)最终一致性:data replications 经过一段时间达到一致性。
  【2】BASE 理论是对 CAP 中的一致性和可用性进行一个权衡的结果,理论的核心思想就是:我们无法做到强一致,但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性
 
一致性的类型
  1. <strong>强一致性</strong>:又称线性一致性(linearizability )
  2. 1.任意时刻,所有节点中的数据是一样的,
  3. 2.一个集群需要对外部提供强一致性,所以只要集群内部某一台服务器的数据发生了改变,那么就需要等待集群内其他服务器的数据同步完成后,才能正常的对外提供服务
  4. 3.保证了强一致性,务必会损耗可用性
  5. <strong>弱一致性</strong>:
  6. 1.系统中的某个数据被更新后,后续对该数据的读取操作可能得到更新后的值,也可能是更改前的值。
  7. 2.即使过了不一致时间窗口,后续的读取也不一定能保证一致。
  8. <strong>最终一致性</strong>:
  9. 1.弱一致性的特殊形式,不保证在任意时刻任意节点上的同一份数据都是相同的,但是随着时间的迁移,不同节点上的同一份数据总是在向趋同的方向变化
  10. 2.存储系统保证在没有新的更新的条件下,最终所有的访问都是最后更新的值
  11. <strong>顺序一致性</strong>:
  12. 1.任何一次读都能读到某个数据的最近一次写的数据。
  13. 2.对其他节点之前的修改是可见(已同步)且确定的,并且新的写入建立在已经达成同步的基础上。
复制代码
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

忿忿的泥巴坨

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表