分布式CAP原理
根据维基百科定义【CAP】
根据定理,一个分布式系统最多只能满足其中两项, 不可能同时满则C-A-P三项
首先说一下对各项原则的理解
(1)一致性C:
单机环境下, 数据只有一份,所有的客户端访问的是同一份数据,不会出现两个客户端看到不一样的数据;分布式环境下,同一份数据会保存在多台服务器上,大量客户端来访问数据,负载会分布在各个服务器上,两个不同的客户端C1,C2可能访问的是不同的两台服务器S1,S2, 如果S1,S2上当前数据完全一样,C1,C2会拿到同样的数据,满足一致性;而要保证每个时刻S1,S2上的数据完全一样,在每次对数据更新的时候,就必须等待C1,C2都完成了数据更新, 该次数据更新操作才能成功返回。
(2)可用性A:
可用性要求所有的读写请求必须在一定的时间得到响应,可以终止,但是不可以一直等待。在单机环境中,如果服务没问题,读写服务可以很快返回,如果服务器挂掉,也可以很容易做到返回响应。但是在分布式环境中,一个写请求达到某一个服务器,该服务更新数据后还得和集群中其他服务器同步数据,使得各个服务器数据一致, 但是网络是不可控的,可能某些服务器之间的网络出现故障导致更新请求无法送达,或者更新完成ACK无法返回,这个时候就要选择是直接返回,还是等待更新成功。
(3)分区容错性P:
分区容错性要求在发生网络分区的情况下,被分割的节点仍能对外提供服务。单机环境下不会发生网络分区,分布式环境下,任意时刻,当前环境下各个服务器的数据即使存在不一致,也要系统能正常对外提供服务。这就会导致一问题,多个客户端访问不同的服务器,由于数据不一致,会存在对同一份数据的访问,得到不同的结果(也就是违背了一致性原则)。
为什么不能同时满足CAP?
(1)假设当前分布式系统满足CA,C要求各个客户端读到的数据必须是一致的,考虑发生网络分区的情况,当前各个服务器存在数据不一致,那么根据C系统是不可以对外提供服务的(因为不同的客户端访问同一份数据会得到不同的结果),那么也就无法满足分区容错性P。
(2)假设当前分布式系统满足CP, 在网络发生分区的情况下,为达到C, 请求只能一直等待,等待网络分区情况解除,系统数据同步完成才能返回,这就无法满足可用性A。
(3)假设当前分布式系统满足AP, 系统要求在一定的时间内就要返回,在发生网络分区的情况下,为了保证P,即使出现网络分区也要正常提供服务,按时返回数据,可能不同客户端访问同一份数据得到不同的结果,这就不能保证数据的一致性C。
总结:
(1)分布式环境下的CAP理论无法同时满足,一般根据业务需要满足其中两个
(2)一些分布式一致性服务,比如zookeeper,牺牲一致性来保证集群的稳定性和可用性,它们无法做到强一致性,但是可以达到最终一致性。
分布式CAP原理的更多相关文章
- 在分布式数据库中CAP原理CAP+BASE
本篇博文的内容均来源于网络,本人只是整理,仅供学习! 一.关系型数据库 关系型数据库遵循ACID规则 事务在英文中是transaction,和现实世界中的交易很类似,它有如下四个特性: 1.A (At ...
- Nosql数据库的四大分类及分布式数据库CAP原理
1. Nosql数据库的四大分类 2. 分布式数据库CAP原理 2.1 关系型数据库事务遵循的ACID规则 首先了解传统关系型数据库事务遵循的ACID规则: 原子性(Atomicity):事务里的所有 ...
- Redis_NoSql分布式数据库CAP原理
前文简单介绍了NoSql数据库的四大分类以及常用的数据库技术,本文简单介绍分布式数据库CAP原理. 一.传统的CAID是什么 1. A(Atomicity)原子性:事务里的所有操作要么全部做完,要么都 ...
- 分布式数据库中CAP原理(CAP+BASE)
分布式数据库中CAP原理(CAP+BASE) 传统的ACID 1)原子性(Atomicity): 事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功. 2)一致性(Con ...
- redis学习之——在分布式数据库中CAP原理CAP+BASE
分布式系统 分布式系统(distributed system) 由多台计算机和通信的软件组件通过计算机网络连接(本地网络或广域网)组成.分布式系统是建立在网络之上的软件系统.正是因为软件的特性,所以分 ...
- NOSQL数据模型和CAP原理
NOSQL数据模型和CAP原理 http://blog.sina.com.cn/s/blog_7800d9210100t33v.html 我本来一直觉得NoSQL其实很容易理解的,我本身也已经对NoS ...
- [转]CAP原理与最终一致性 强一致性 透析
在足球比赛里,一个球员在一场比赛中进三个球,称之为帽子戏法(Hat-trick).在分布式数据系统中,也有一个帽子原理(CAP Theorem),不过此帽子非彼帽子.CAP原理中,有三个要素: 一致性 ...
- CAP原理的证明
CAP概述 C: Consistency 一致性 A: Availability 可用性 P:Partition Tolerance分区容错性 CAP理论的核心是:一个分布式系统不可能同时很好的满足一 ...
- CAP原理、一致性模型、BASE理论和ACID特性
CAP原理 在理论计算机科学中,CAP定理(CAP theorem),又被称作布鲁尔定理(Brewer's theorem),它指出对于一个分布式计算系统来说,不可能同时满足以下三点: 一致性(Con ...
随机推荐
- Head First设计模式之组合模式
一.定义 将对象组合成树形结构来表现"整体-部分"层次结构. 组合能让客户以一致的方法处理个别对象以及组合对象. 主要部分可以被一致对待问题. 在使用组合模式中需要注意一点也是组合 ...
- Git与GitHub学习笔记(八)git如何同时同步提交到码云和GitHub上
前言: 今天github push代码一直push不上去,打算就备份一份代码带国内开源码云上. Github容易出现的情况是: 国内访问速度比较慢, 如果被墙掉的话,就直接没发使用了 如果开源个PHP ...
- Linux上安装Redis
很多编程的小朋友一提到Linux脑袋就大了,我也一样,我是一个大专的学生,没有学过Linux,感觉自己欠缺很多,也知道了人和人之间的差距,当你真正的走上社会,才知道社会是什么,才知道没有学历找工作有多 ...
- 【Java框架型项目从入门到装逼】第六节 - 用ajax请求后台数据
这一节我们来说一下如何用ajax提交请求? 我们先不讲ajax的原理,还是先以实战为主,看一下这个东西到底怎么用的? form表单: <!-- 采用post表单提交 --> <for ...
- 2017春 前端自动化(二) 页面自动刷新、sass与css转换的使用、pxToRem直观转换
2017春 前端自动化(二) 页面自动刷新.sass与css转换的使用.pxToRem直观转换 引言: 此文要演示:浏览器页面自动刷新:移动端px与rem的转换,简单直观化:使用sass自动生 ...
- 【Python3之模块及包的导入】
一.模块导入 1.定义 Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句. 模块让你能够有逻辑地组织你的 Python ...
- VMware仅主机模式虚拟机无法ping通物理机
问题描述 在VMware Workstation中新建了一个虚拟机CentOS7,网络适配器选择的是"仅主机模式",结果,物理机ping不通虚拟机,虚拟机也ping不通物理机. 原 ...
- 微信支付接口开发之---微信支付之JSSDK(公众号支付)步骤
1.准备 1.1.公众号为服务号,开通微信支付功能 1.2.为了方便调试微信后台的回调URL(必须为外网),我用了nat123软件来做一个映射 1.3.官方微信开发的示例WxP ...
- SGML、HTML、XML、XHTML的关系
我们先看看它们的历史起源: SGML--1986年国际标准化组织出版发布了一个信息管理方面的国际标准(ISO 8879:1986信息处理). HTML 2.0--1995年11月作为RFC 1866发 ...
- 编码与模式------《Designing Data-Intensive Applications》读书笔记5
进入到第四章了,本篇主要聊的点是编码(也就是序列化)与代码升级的一些场景,来梳理存储之中涉及到的编解码的流程.目前主流的编解码便是来自Apache的Avro,来自Facebook的Thrift与Goo ...