分布式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 ...
随机推荐
- 关于Oracle开启自动收集统计信息的SPA测试
主题:关于Oracle开启自动收集统计信息的SPA测试 环境:Oracle RAC 11.2.0.4(Primary + Standby) 需求:生产Primary库由于历史原因关闭了自动统计信息的收 ...
- SQL SERVER 日期转换大全
博客转自:http://blog.csdn.net/baiduandxunlei/article/details/9180075 CONVERT(data_type,expression[,style ...
- NFS : device is busy
unmount [ options ] -f : Force unmount (in case of an unreachable NFS system). -l : Lazy unmount. D ...
- MicroPython教程之TPYBoard开发板DIY红外寻迹小车
智能小车现在差不多是电子竞赛或者DIY中的主流了,寻迹,壁障,遥控什么的,相信大家也都见得很多了,这次就大家探讨一下寻迹小车的制作方法,不同于以往的是这次的程序不用C语言写,而是要使用python语言 ...
- 【读书笔记与思考】《python数据分析与挖掘实战》-张良均
[读书笔记与思考]<python数据分析与挖掘实战>-张良均 最近看一些机器学习相关书籍,主要是为了拓宽视野.在阅读这本书前最吸引我的地方是实战篇,我通读全书后给我印象最深的还是实战篇.基 ...
- Python:猜拳游戏
import random #导入包 play = int(input("请输入(石头0 剪刀1 布2):")) #这里的int必须加上 i = random.randint(0, ...
- 架构师之路->架构师思维的培养
公司的CMS(综合赋码管理系统)是WINFORM的CS架构.这套系统的架构师换了3届,到现在已经几年没有架构师了.本来入职时,岗位目标就是这个“自动化架构师”. 后来和领导达成共识先争取成为储备架构师 ...
- 使用Tomcat的Reload提高开发速度(翻译)
欢迎转载http://www.cnblogs.com/coodream2009,有翻译的不太准确的地方请大家指出,我继续修改完善. 按照Java Servlet规范第四部分推荐的,Tomcat系统的实 ...
- CSS属性:背景属性(图文详解)
本文最初发表于博客园,并在GitHub上持续更新前端的系列文章.欢迎在GitHub上关注我,一起入门和进阶前端. 以下是正文. background系列属性 常见背景属性 CSS样式中,常见的背景属性 ...
- 明星单品tab
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...