分布式数据库CAP原理
分布式数据库CAP原理
- CAP简介
- CAP理论
- CAP总结
CAP简介
- 传统的关系型数据库事务具备ACID:
(1)A :原子性
(2)C :一致性
(3)I :独立性
(4)D :持久性 - 分布式数据库的CAP:
(1)C(Consistency):强一致性
“all nodes see the same data at the same time”,即更新操作成功并返回客户端后,所有节点在同一时间的数据完全一致,这就是分布式的一致性。一致性的问题在并发系统中不可避免,对于客户端来说,一致性指的是并发访问时更新过的数据如何获取的问题。从服务端来看,则是更新如何复制分布到整个系统,以保证数据最终一致。
(2)A(Availability):高可用性
可用性指“Reads and writes always succeed”,即服务一直可用,而且要是正常的响应时间。好的可用性主要是指系统能够很好的为用户服务,不出现用户操作失败或者访问超时等用户体验不好的情况。
(3)P(Partition tolerance):分区容错性
即分布式系统在遇到某节点或网络分区故障时,仍然能够对外提供满足一致性或可用性的服务。分区容错性要求能够使应用虽然是一个分布式系统,而看上去却好像是在一个可以运转正常的整体。比如现在的分布式系统中有某一个或者几个机器宕掉了,其他剩下的机器还能够正常运转满足系统需求,对于用户而言并没有什么体验上的影响。
CAP理论
- CAP理论提出就是针对分布式数据库环境的,所以,P这个属性必须容忍它的存在,而且是必须具备的。
- 因为P是必须的,那么我们需要选择的就是A和C。
- 大家知道,在分布式环境下,为了保证系统可用性,通常都采取了复制的方式,避免一个节点损坏,导致系统不可用。那么就出现了每个节点上的数据出现了很多个副本的情况,而数据从一个节点复制到另外的节点时需要时间和要求网络畅通的,所以,当P发生时,也就是无法向某个节点复制数据时,这时候你有两个选择:
(1)选择可用性 A,此时,那个失去联系的节点依然可以向系统提供服务,不过它的数据就不能保证是同步的了(失去了C属性)。
(2)选择一致性C,为了保证数据库的一致性,我们必须等待失去联系的节点恢复过来,在这个过程中,那个节点是不允许对外提供服务的,这时候系统处于不可用状态(失去了A属性)。 - 最常见的例子是读写分离,某个节点负责写入数据,然后将数据同步到其它节点,其它节点提供读取的服务,当两个节点出现通信问题时,你就面临着选择A(继续提供服务,但是数据不保证准确),C(用户处于等待状态,一直等到数据同步完成)。
CAP总结
- 分区是常态,不可避免,三者不可共存
- 可用性和一致性是一对冤家
一致性高,可用性低
一致性低,可用性高 - 因此,根据 CAP 原理将 NoSQL 数据库分成了满足 CA 原则、满足 CP 原则和满足 AP 原则三 大类:
(1)CA - 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。
(2)CP - 满足一致性,分区容忍性的系统,通常性能不是特别高。
(3)AP - 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。
分布式数据库CAP原理相关推荐
- redis学习-分布式数据库CAP原理
传统的ACID分别是什么 A (Atomicity) 原子性 C (Consistency) 一致性 I (Isolation) 独立性 D (Durability) 持久性 关系型数据库遵循ACID ...
- 分布式数据库CAP理论
传统数据库与NoSQL数据库 传统的关系型数据库在功能支持上通常很宽泛,从简单的键值查询,到复杂的多表联合查询再到事务机制的支持.而与之不同的是,NoSQL系统通常注重性能和扩展性,而非事务机制(事务 ...
- 分布式基础--CAP原理
上图是CAP原理图,看到之后,不禁引入下面几个问题,让我们一一带着问题去了解CAP. 1.什么是CAP? 2.什么是分区? 3.为什么只有3选2? 4.可用的抉择? 1. 什么是 CAP 定理 CAP ...
- 「数据库系列四」分布式数据库CAP理论与最终一致性
传统关系型数据库中事务有四个重要的特性,简称ACID,即 原子性 : 事务是一个不可分割的工作单位,事务中的操作要么都成功,如果有一个执行失败,所有的SQL将都被撤销,恢复到事务开始的状态 一致性 : ...
- 分布式数据库CAP原理和Base
l 传统ACID有: Ø A(Atomicity)原子性 Ø C(Consistency)一致性 Ø I(Isolation)独立性 Ø D(Durability)持久性 l CAP:不可能同时满足, ...
- 分布式数据库中CAP原理CAP+BASE
一.传统的ACID 分别是什么 1.A: atomicity 原子性 2.C: Consistency 一致性 3.I: Isolation 独立性 4.D: Duraility 持久性 二.CAP ...
- 从分布式数据库的CAP特性说起
在传统RDBM系统中,对于事务处理必须保证为一个完整的逻辑处理过程,具备ACID四个特性,A Atonomy 事务处理的原子性,要么成功,要么失败 ,C Consistency 一致性,数据库必须保持 ...
- 分布式数据库数据一致性的原理、与技术实现方案
http://youzhixueyuan.com/the-principle-and-technology-realization-of-distributed-data-consistency.ht ...
- 数据库中的CAP原理
去年在参加盒子科技秋招笔试题中遇到过,印象深刻,一直想要查资料总结下来. 这个理论是由美国著名科学家,同时也是著名互联网企业Inktomi的创始人Eric Brewer在2000年PODC(Sympo ...
最新文章
- 国外优秀开源PHP建站程序一览
- promise ajax 队列,ES6中的promise,从使用promise封装ajax说起
- sklearn机器学习常用过程总结
- centos7远程桌面端口_CentOS7启用远程桌面连接
- 华为成功完成中国联通NFV三层解耦测试验证
- 韩忠康 5天玩转mysql_玩转MySQL数据库5天就够了(2)
- linux修改ip配置文件路径,Centos7系统如何修改IP地址
- 使用Log Parase 结合 Log Parase Studio 查询IIS日志
- 7-15 sdut-数据类型-4 第七次全国人口普查数据分析
- win7如何调整计算机c盘,Win7系统增加C盘空间的方法
- 获取服务器的视频文件夹,视频从云服务器获取视频文件夹
- 秦皇岛科学选育新品种 国稻种芯·中国水稻节:河北谱丰收曲
- 顺序表倒置java_倒置顺序表
- 使用 Amazon Amplify快速创建简单的 Android 应用程序
- 少儿编程课程体系需求
- 建网站选择网络诚信专属.xin域名,诚信赢天下!
- 一道传统特色小吃让她萌生创业想法,一天能挣800元
- NOJ[1587] 一群不学好的NBUT ACMers竟然作死要去爬山?晚上还困在山上回不去2333而且竟然只有一个手电筒,(名字那么长)不是作死是什么
- 快速学习-Saturn FAQ
- Python 基础 — Python 简介
热门文章
- Java8 lambda表达式,Comparator.comparing().thenComparing()报错
- 输出这个整数对应的拼音
- 【React学习】React中ref的用法
- UGUI sprite editor九宫切图用法
- PAT 甲级 A1010 Radix (25 分)
- linux系统宝塔安装nodejs,node安装,nodejs安装,Windows nodejs安装,Linux nodejs安装
- 关于自动布局(Autolayout)
- 02 BGP地址聚合
- IPv4子网划分与聚合
- 回溯算法--LeetCode-78 子集、LeetCode-90 子集Ⅱ