根据维基百科定义【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原理的更多相关文章

  1. 在分布式数据库中CAP原理CAP+BASE

    本篇博文的内容均来源于网络,本人只是整理,仅供学习! 一.关系型数据库 关系型数据库遵循ACID规则 事务在英文中是transaction,和现实世界中的交易很类似,它有如下四个特性: 1.A (At ...

  2. Nosql数据库的四大分类及分布式数据库CAP原理

    1. Nosql数据库的四大分类 2. 分布式数据库CAP原理 2.1 关系型数据库事务遵循的ACID规则 首先了解传统关系型数据库事务遵循的ACID规则: 原子性(Atomicity):事务里的所有 ...

  3. Redis_NoSql分布式数据库CAP原理

    前文简单介绍了NoSql数据库的四大分类以及常用的数据库技术,本文简单介绍分布式数据库CAP原理. 一.传统的CAID是什么 1. A(Atomicity)原子性:事务里的所有操作要么全部做完,要么都 ...

  4. 分布式数据库中CAP原理(CAP+BASE)

    分布式数据库中CAP原理(CAP+BASE) 传统的ACID 1)原子性(Atomicity): 事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功. 2)一致性(Con ...

  5. redis学习之——在分布式数据库中CAP原理CAP+BASE

    分布式系统 分布式系统(distributed system) 由多台计算机和通信的软件组件通过计算机网络连接(本地网络或广域网)组成.分布式系统是建立在网络之上的软件系统.正是因为软件的特性,所以分 ...

  6. NOSQL数据模型和CAP原理

    NOSQL数据模型和CAP原理 http://blog.sina.com.cn/s/blog_7800d9210100t33v.html 我本来一直觉得NoSQL其实很容易理解的,我本身也已经对NoS ...

  7. [转]CAP原理与最终一致性 强一致性 透析

    在足球比赛里,一个球员在一场比赛中进三个球,称之为帽子戏法(Hat-trick).在分布式数据系统中,也有一个帽子原理(CAP Theorem),不过此帽子非彼帽子.CAP原理中,有三个要素: 一致性 ...

  8. CAP原理的证明

    CAP概述 C: Consistency 一致性 A: Availability 可用性 P:Partition Tolerance分区容错性 CAP理论的核心是:一个分布式系统不可能同时很好的满足一 ...

  9. CAP原理、一致性模型、BASE理论和ACID特性

    CAP原理 在理论计算机科学中,CAP定理(CAP theorem),又被称作布鲁尔定理(Brewer's theorem),它指出对于一个分布式计算系统来说,不可能同时满足以下三点: 一致性(Con ...

随机推荐

  1. Head First设计模式之中介者模式

    一.定义 又称为调停者模式,定义一个中介对象来封装系列对象之间的交互.中介者使各个对象不需要显示地相互引用,从而使其耦合性松散,而且可以独立地改变他们之间的交互. 二.结构 组成: ● 抽象中介者(M ...

  2. Validation of viewstate MAC failed 解决办法

    大部分人都说是在页里或web.config里加EnableEventValidation="false" EnableViewStateMac="false" ...

  3. zabbix借助onealert实现微信报警

    官网:http://wiki.110monitor.com/integration/zabbix-manual.html) Zabbix安装包部署方式 1)下载agent软件包 请在Zabbix服务器 ...

  4. linux系统编程:IO读写过程的原子性操作实验

    所谓原子性操作指的是:内核保证某系统调用中的所有步骤(操作)作为独立操作而一次性加以执行,其间不会被其他进程或线程所中断. 举个通俗点的例子:你和女朋友OOXX的时候,突然来了个电话,势必会打断你们高 ...

  5. [树莓派(raspberry pi)] 02、PI3安装openCV开发环境做图像识别(详细版)

    前言 上一篇我们讲了在linux环境下给树莓派安装系统及入门各种资料 ,今天我们更进一步,尝试在PI3上安装openCV开发环境. 博主在做的过程中主要参考一个国外小哥的文章(见最后链接1),不过其教 ...

  6. 使用Tomcat的Reload提高开发速度(翻译)

    欢迎转载http://www.cnblogs.com/coodream2009,有翻译的不太准确的地方请大家指出,我继续修改完善. 按照Java Servlet规范第四部分推荐的,Tomcat系统的实 ...

  7. Django—模板渲染

    参考文档: http://www.cnblogs.com/fnng/p/4373108.html https://code.ziqiangxuetang.com/django/django-intro ...

  8. vim保存时提示: 无法打开并写入文件

    命名内容已经写入,但是不知怎的就是没法保存,估计是权限不足的问题. 切换到root用户,进行了同样的操作,发现没有该问题了. 经验教训:编辑配置文件时,记得切换到root用户进行编辑.

  9. Java中的集合框架(下)

    学生选课--判断Set中课程是否存在 package com.imooc.collection; import java.util.ArrayList; import java.util.Arrays ...

  10. [51nod1310]Chandrima and XOR

    有这样一个小到大排列的无穷序列S:1, 2, 4, 5, 8......,其中任何一个数转为2进制不包括2个连续的1.给出一个长度为N的正整数数组A,A1, A2......An记录的是下标(下标从1 ...