分布式理论(一)CAP 理论
分布式理论(一) 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 理论相关推荐
- cap理论具体含义_分布式事务的CAP理论
相关历史文章(阅读本文之前,您可能需要先看下之前的系列 ) 分布式事务「2020年」必学,升职加薪你准备好了吗? 事务的基本概念 事务的四大特性ACID 分布式事务产生的场景 前言 通过前面的学习,我 ...
- 分布式理论:CAP理论
2019独角兽企业重金招聘Python工程师标准>>> 一.CAP理论原理 1.CAP理论介绍 2000年7月,加州大学伯克利分校的Eric Brewer教授在ACM PODC会议上 ...
- 分布式——ACID原则 CAP理论
分布式计算的原理 分布式计算就是将计算任务分摊到大量的计算节点上,一 起完成海量的计算任务.而分布式计算的原理和并行计算 类似,就是将一个复杂庞大的计算任务适当划分为一个个 小任务,任务并行执行,只不 ...
- 分布式架构之CAP理论/AP架构/CP架构
上一篇梳理一下 CAP定理:https://blog.csdn.net/Soinice/article/details/96782876 著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性) ...
- 分布式系统设计之CAP理论
一.概述 CAP理论是美国加州大学的计算机科学家 Eric Brewer 在1998年提出的,该理论主要指出了分布式系统设计中存在两个质量指标:数据强一致性(Consistent)和服务高可用(Ava ...
- redis中的AKF理论和CAP理论详解
redis的可用性 通过AKF理论构建集群 单机redis的会带来的问题 容量有限,内存有限 单点故障,挂机后,导致服务不可用 连接压力,I/O压力大,并发压力大 根据AKF理论解决上面的三个问题,分 ...
- etcd 笔记(01)— etcd 简介、特点、应用场景、常用术语、分布式 CAP 理论、分布式原理
1. etcd 简介 etcd 官网定义: A highly-available key value store for shared configuration and service discov ...
- 分布式理论:CAP是三选二吗?
分布式系统的 CAP 理论:首先把分布式系统中的三个特性进行了如下归纳: ● 一致性(C): 在分布式系统中的所有数据备份,在同一时刻是否同样的值.(等同于所有节点访问同一份最新的数据副本) ● 可用 ...
- 学习分布式不得不会的CAP理论
2018年07月16日 11:52:59 Hollis在CSDN 阅读数:161更多 个人分类: 架构 2000年7月,加州大学伯克利分校的Eric Brewer教授在ACM PODC会议上提出CAP ...
最新文章
- java 计划日视图,GitHub - sddysz/calendarSchedule: 日程表,仿滴答清单,包含日视图、三日视图、周视图、月视图、列表视图、同步手机系统日程、添加日程...
- Unity 类似FingerGestures 的相机跟随功能
- ASP.NET 后台下载文件方法
- 项目--教师日常办公平台中的活动图
- 隐藏在数学中的哲理,令人回味无穷
- java ssh客户端_简单的Java SSH客户端
- 诚通网盘会员很坑的,升级会员的人要注意
- 【英语学习】【Level 07】U08 Old Stories L1 The old times
- 可能是史上最详细-Faster RCNN Pytorch 复现全纪录
- thrift 学习 了解
- centos 安装 Vagrant
- 【笔记】gradle命令行运行任务如何设置代理模式
- jrtplib使用笔记
- 【转】word 高效经典教程
- 文本特征提取方法介绍
- 区块链安全保卫战:三分技术,七分管理
- 在家佛弟子对待工作的态度——世俗八正道
- 关于DefaultHttpClient的作用已经被弃之后的新方法
- 百度网盘不限速(小白亲测)
- BCD码以及各进制之间的相互转换
热门文章
- BAT 批处理命令 - 获取时间并进行自定义年月日、时分秒格式实例演示
- C++ leetCode 1. 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个
- 【2015沈阳现场A】
- [YTU]_2444(C++习题 对象转换)
- 10.2.1 关于vc++不支持把类的成员函数定义为类的友元函数的处理
- Longest Common Prefix
- 【MPI高性能计算】蒙特卡洛方法计算pi值
- 微信好友数据打包下载--微信数据分析(二)
- Python(Windows)下安装各种库的多种方法总结--灵活使用pip
- 《DSP using MATLAB》Problem 6.24