分布式理论(一) CAP理论

一.CAP理论前言

CAP原则又称为CAP理论,主要思想是在任何一个分布式系统中都无法同时满足CAP。

C(Consistency):表示一致性,所有的节点同一时间看到的是相同的数据。

A(Avaliablity):表示可用性,不管是否成功,确保一个请求都能接收到响应。

P(Partion Tolerance):分区容错性,系统任意分区后,在网络故障时,仍能操作。

如上所述,正如Gilbert认为,一致性其实就是关系型数据库所讲的ACID,一个用户请求要么是成功,要么是失败的,不能有处于一个中间状态;一旦一个事务完成,将来所有事务都必须基于这个完成后的状态;未完成的事务不会互相影响;一旦一个事务完成,就是持戒的。可用性其实就是对于一个系统而言,所有的请求都应该“成功”并且收到“响应”。分区容错性其实就是指分布式系统的容错性,一个节点出现了故障,不影响整个集群的正常使用。

二.CAP理论介绍

如图,在一个网络中,N1和N2即分布式系统中的两个节点,他们都共享数据块V,其中有一个值是为V0。

l 在满足一致性的时候,A中的V0应该和B中的V0保持一致的,即V0=V0

l 在满足可用性的时候,无论请求访问A或者是B都应该得到响应。

l 在满足分区可用性的时候,A和B随便一个出现宕机或者网络不通的情况下,都不应该影响整个系统的可用性。

上述描述如果A程序更新V0值为V1,然后在更新B上的副本为V1,当一个请求访问B时,得到的结果是V1。如下图所示:

但是分布式系统中,有些时候这些并不能按照你想的这样进行,在分布式系统中通常情况下网络是分区的,如果出现了网络延迟,导致N1上更新的消息无法到达N2上,即N2上的数据副本依然是V0,当一个请求访问B时,获取到的结果是V0,而访问A时,获取到的结果是V1,这就导致了在用户看来是同一个请求,得到的结果是不一样的。如下图

在这个时候,方案的设计者就应该在这里做出两种选择:

(1)牺牲数据一致性,保证可用性。响应旧的数据V0给用户。

(2)牺牲可用性,保证数据一致性。阻塞等待,直到网络连接恢复,数据更新操作M完成之后,再给用户响应最新的数据V1

三.CAP之间取舍

接下来我们就谈一谈CAP,这三者之间是如何取舍的:

(1)CA without P

如果不要求P(不允许分区),则C(强一致性)和A(可用性)是可以保证的。但其实分区不是你想不想的问题,而是始终会存在,因此CA的系统更多的是允许分区后各子系统依然保持CA。

常见模型例子:

单站点数据库;集群数据库等,网上找的还有:LDAP协议,xFS文件系统

实现方式:

两阶段提交;缓存验证协议

(2) CP without A

如果不要求A(可用),相当于每个请求都需要在节点之间强一致,而P(分区)会导致同步时间无限延长,如此CP也是可以保证的。很多传统的数据库分布式事务都属于这种模式,以及Zookeeper等中间件

常见模型例子:

分布式数据库;分布式锁;大部分的协议;Zookeeper

实现方式:

悲观锁;少数分区不可用

(3) AP wihtout C

要高可用并允许分区,则需放弃一致性。一旦分区发生,节点之间可能会失去联系,为了高可用,每个节点只能用本地数据提供服务,而这样会导致全局数据的不一致性。现在众多的NoSQL都属于。

常见模型例子:

Web缓存;DNS;NoSQL;

实现方式:

到期或者租赁;解决冲突;乐观锁

CAP的意义:

在系统架构时,应该根据具体的业务场景来权衡CAP,就拿大多数的门户网站来说,因为机器数量庞大,部署节点分散,网络故障时常态,可用性是必须要保证的,所以在设计的时候就会考虑舍弃一些一致性而选择AP模型。但是对于数据一致性较高的银行系统来说,可以用于系统临时不可用,但是数据必须要保持一致来说,选择CP模型无可厚非。

转载于:https://www.cnblogs.com/lovegrace/p/11391842.html

分布式理论(一)CAP 理论相关推荐

  1. cap理论具体含义_分布式事务的CAP理论

    相关历史文章(阅读本文之前,您可能需要先看下之前的系列 ) 分布式事务「2020年」必学,升职加薪你准备好了吗? 事务的基本概念 事务的四大特性ACID 分布式事务产生的场景 前言 通过前面的学习,我 ...

  2. 分布式理论:CAP理论

    2019独角兽企业重金招聘Python工程师标准>>> 一.CAP理论原理 1.CAP理论介绍 2000年7月,加州大学伯克利分校的Eric Brewer教授在ACM PODC会议上 ...

  3. 分布式——ACID原则 CAP理论

    分布式计算的原理 分布式计算就是将计算任务分摊到大量的计算节点上,一 起完成海量的计算任务.而分布式计算的原理和并行计算 类似,就是将一个复杂庞大的计算任务适当划分为一个个 小任务,任务并行执行,只不 ...

  4. 分布式架构之CAP理论/AP架构/CP架构

    上一篇梳理一下 CAP定理:https://blog.csdn.net/Soinice/article/details/96782876 著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性) ...

  5. 分布式系统设计之CAP理论

    一.概述 CAP理论是美国加州大学的计算机科学家 Eric Brewer 在1998年提出的,该理论主要指出了分布式系统设计中存在两个质量指标:数据强一致性(Consistent)和服务高可用(Ava ...

  6. redis中的AKF理论和CAP理论详解

    redis的可用性 通过AKF理论构建集群 单机redis的会带来的问题 容量有限,内存有限 单点故障,挂机后,导致服务不可用 连接压力,I/O压力大,并发压力大 根据AKF理论解决上面的三个问题,分 ...

  7. etcd 笔记(01)— etcd 简介、特点、应用场景、常用术语、分布式 CAP 理论、分布式原理

    1. etcd 简介 etcd 官网定义: A highly-available key value store for shared configuration and service discov ...

  8. 分布式理论:CAP是三选二吗?

    分布式系统的 CAP 理论:首先把分布式系统中的三个特性进行了如下归纳: ● 一致性(C): 在分布式系统中的所有数据备份,在同一时刻是否同样的值.(等同于所有节点访问同一份最新的数据副本) ● 可用 ...

  9. 学习分布式不得不会的CAP理论

    2018年07月16日 11:52:59 Hollis在CSDN 阅读数:161更多 个人分类: 架构 2000年7月,加州大学伯克利分校的Eric Brewer教授在ACM PODC会议上提出CAP ...

最新文章

  1. java 计划日视图,GitHub - sddysz/calendarSchedule: 日程表,仿滴答清单,包含日视图、三日视图、周视图、月视图、列表视图、同步手机系统日程、添加日程...
  2. Unity 类似FingerGestures 的相机跟随功能
  3. ASP.NET 后台下载文件方法
  4. 项目--教师日常办公平台中的活动图
  5. 隐藏在数学中的哲理,令人回味无穷
  6. java ssh客户端_简单的Java SSH客户端
  7. 诚通网盘会员很坑的,升级会员的人要注意
  8. 【英语学习】【Level 07】U08 Old Stories L1 The old times
  9. 可能是史上最详细-Faster RCNN Pytorch 复现全纪录
  10. thrift 学习 了解
  11. centos 安装 Vagrant
  12. 【笔记】gradle命令行运行任务如何设置代理模式
  13. jrtplib使用笔记
  14. 【转】word 高效经典教程
  15. 文本特征提取方法介绍
  16. 区块链安全保卫战:三分技术,七分管理
  17. 在家佛弟子对待工作的态度——世俗八正道
  18. 关于DefaultHttpClient的作用已经被弃之后的新方法
  19. 百度网盘不限速(小白亲测)
  20. BCD码以及各进制之间的相互转换

热门文章

  1. BAT 批处理命令 - 获取时间并进行自定义年月日、时分秒格式实例演示
  2. C++ leetCode 1. 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个
  3. 【2015沈阳现场A】
  4. [YTU]_2444(C++习题 对象转换)
  5. 10.2.1 关于vc++不支持把类的成员函数定义为类的友元函数的处理
  6. Longest Common Prefix
  7. 【MPI高性能计算】蒙特卡洛方法计算pi值
  8. 微信好友数据打包下载--微信数据分析(二)
  9. Python(Windows)下安装各种库的多种方法总结--灵活使用pip
  10. 《DSP using MATLAB》Problem 6.24