精华内容
下载资源
问答
  • CAP定理
    2022-02-04 09:35:53

    一、CAP定理概念

    在计算机科学中,CAP定理(CAP therorem),又被称为布鲁尔定理(Brewer’s theorem),他指出在分布式系统中,不可能同时满足以下三点:

    1.一致性(Consistency):在某个写操作完成之后的任何读操作都必须返回该写操作写入的值,或者再之后的写操作写入的值。即:各个数据备份的数据内容要保持一致且都为最新数据。
    2.可用性(Availability) :任何一个在线的节点收到的请求必须都做出相应。即:不论成功失败,都有回应。
    3.分隔容忍/分区容错性(Partition tolerance) :允许网络丢失从一个服务节点到另外一个服务节点的任意信息。即:不同的节点可能会数据不一致,这种情况下我们要保证系统还能正常运行。

    CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个

    二、根据CAP原理划分的数据库类别

    根据 CAP 原理将 NoSQL 数据库分成了满足 CA 原则、满足 CP 原则和满足 AP 原则三 大类:

    CA - 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。
    CP- 满足一致性,分区容忍必的系统,通常性能不是特别高。
    AP - 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。

    各类型代表数据库:
    各类型代表的数据库

    更多相关内容
  • CAP 定理

    2019-07-27 19:04:27
    CAP 定理是这方面的基本定理,也是理解分布式系统的起点。 一、分布式系统的三个指标 1998年,加州大学的计算机科学家 Eric Brewer 提出,分布式系统有三个指标。 Consistency 一致性 Ava...

    分布式系统(distributed system)正变得越来越重要,大型网站几乎都是分布式的。

    分布式系统的最大难点,就是各个节点的状态如何同步。CAP 定理是这方面的基本定理,也是理解分布式系统的起点。

    一、分布式系统的三个指标

    1998年,加州大学的计算机科学家 Eric Brewer 提出,分布式系统有三个指标。

    • Consistency             一致性
    • Availability               可用性
    • Partition tolerance   分区容错

    它们的第一个字母分别是 C、A、P。

    Eric Brewer 说,这三个指标不可能同时做到。这个结论就叫做 CAP 定理。

    二、Partition tolerance

    大多数分布式系统都分布在多个子网络。每个子网络就叫做一个区(partition)。分区容错的意思是,区间通信可能失败。比如,一台服务器放在中国,另一台服务器放在美国,这就是两个区,它们之间可能无法通信。

    上图中,G1 和 G2 是两台跨区的服务器。G1 向 G2 发送一条消息,G2 可能无法收到。系统设计的时候,必须考虑到这种情况。

    一般来说,分区容错无法避免,因此可以认为 CAP 的 P 总是成立。CAP 定理告诉我们,剩下的 C 和 A 无法同时做到。

    三、Consistency

    Consistency 中文叫做"一致性"。意思是,写操作之后的读操作,必须返回该值。举例来说,某条记录是 v0,用户向 G1 发起一个写操作,将其改为 v1。

    接下来,用户的读操作就会得到 v1。这就叫一致性。

    问题是,用户有可能向 G2 发起读操作,由于 G2 的值没有发生变化,因此返回的是 v0。G1 和 G2 读操作的结果不一致,这就不满足一致性了。

    为了让 G2 也能变为 v1,就要在 G1 写操作的时候,让 G1 向 G2 发送一条消息,要求 G2 也改成 v1。

    这样的话,用户向 G2 发起读操作,也能得到 v1。

    四、Availability

    Availability 中文叫做"可用性",意思是只要收到用户的请求,服务器就必须给出回应。

    用户可以选择向 G1 或 G2 发起读操作。不管是哪台服务器,只要收到请求,就必须告诉用户,到底是 v0 还是 v1,否则就不满足可用性。

    五、Consistency 和 Availability 的矛盾

    一致性和可用性,为什么不可能同时成立?答案很简单,因为可能通信失败(即出现分区容错)。

    如果保证 G2 的一致性,那么 G1 必须在写操作时,锁定 G2 的读操作和写操作。只有数据同步后,才能重新开放读写。锁定期间,G2 不能读写,没有可用性不。

    如果保证 G2 的可用性,那么势必不能锁定 G2,所以一致性不成立。

    综上所述,G2 无法同时做到一致性和可用性。系统设计时只能选择一个目标。如果追求一致性,那么无法保证所有节点的可用性;如果追求所有节点的可用性,那就没法做到一致性。

    [更新 2018.7.17]

    读者问,在什么场合,可用性高于一致性?

    举例来说,发布一张网页到 CDN,多个服务器有这张网页的副本。后来发现一个错误,需要更新网页,这时只能每个服务器都更新一遍。

    一般来说,网页的更新不是特别强调一致性。短时期内,一些用户拿到老版本,另一些用户拿到新版本,问题不会特别大。当然,所有人最终都会看到新版本。所以,这个场合就是可用性高于一致性。

    转载:http://www.ruanyifeng.com/blog/2018/07/cap.html

     

     

    展开全文
  • CAP定理(CAP theorem)

    2021-05-10 09:30:26
    CAP定理(CAP theorem) 1、在我们写代码的过程中,经常会遇见一些定理,那今天就简单介绍一下什么是CAP定理呢?(CAP定理的说明性证明,有兴趣的可以去看一下) CAP 定理指出,分布式系统不能同时具有一致性、可用...

    CAP定理(CAP theorem)

    1、在我们写代码的过程中,经常会遇见一些定理,那今天就简单介绍一下什么是CAP定理呢?(CAP定理的说明性证明,有兴趣的可以去看一下)

    CAP 定理指出,分布式系统不能同时具有一致性、可用性和分区容忍性。

    2、那么再说CAP定理之前我们需要简单了解一下分布式系统与ACP之间的联系

    分布式系统的最大难点,就是各个节点的状态如何同步。CAP 定理是这方面的基本定理,也是理解分布式系统的起点。

    分布式系统简介:
    (1) 分布式系统(distributed system)由多台计算机和通信的软件组件通过计算机网络连接(本地网络或广域网)组成。
    (2)分布式系统是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。
    (3) 因此,网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件。
    (4) 分布式系统可以应用在不同的平台上如:Pc、工作站、局域网和广域网上等。

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

    • C:一致性(Consistency) (所有节点在同一时间具有相同的数据,数据要一直处于一致的状态)

    • A:可用性(Availability) (保证每个请求不管成功或者失败都有响应)

    • P:分区容错(Partition tolerance) (系统中任意信息的丢失或失败不会影响系统的继续运作,分区:区间的通信可能会失败,分区容错:系统允许出现传输数据失败的情况)

      你或许会有疑惑,一致性和可用性,为什么不可能同时成立?答案很简单,因为可能通信失败(即出现分区容错)
      

    4、分布式系统的三个指标
    在这里插入图片描述
    CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个。

    因此,根据 CAP 原理将 NoSQL 数据库分成了满足 CA 原则、满足 CP 原则和满足 AP 原则三 大类

    • CA - 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。
    • CP - 满足一致性,分区容忍性的系统,通常性能不是特别高。
    • AP - 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。

    5、粗略的理解,不正确的可以私信我,或者下方评论~

    展开全文
  • 分布式CAP定理

    2020-12-24 17:58:01
    分布式CAP定理 1 概述: CAP定理又称布鲁布定理,该定理指出,在一个分布式系统中,对于一致性、可用性、分区容错这三个特性,不可能同时满足,必须有所舍弃。所以我们设计分布式系统时,必须在三者之间(尤其是一致...

    分布式CAP定理

    1 概述:

    CAP定理又称布鲁布定理,该定理指出,在一个分布式系统中,对于一致性、可用性、分区容错这三个特性,不可能同时满足,必须有所舍弃。所以我们设计分布式系统时,必须在三者之间(尤其是一致性和可用性之间)有所取舍和平衡。
    CAP定理是1998年有计算机科学家埃里克·布鲁尔(Eric Brewer)提出,并与2002年麻省理工大学的赛斯·吉尔伯特和南希·林奇发表了布鲁尔猜想的证明,使之成为一个定理。
    在这里插入图片描述

    2三个特性

    1. 一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值,即写操作之后的读操作,必须返回该值。(分为弱一致性、强一致性和最终一致性)
    2. 可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)
    3. 分区容忍性(P):以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。

    3取舍策略

    CAP三个特性只能满足其中两个,那么取舍的策略就共有三种:

    3.1、CA without P:如果不要求P(不允许分区),则C(强一致性)和A(可用性)是可以保证的。但放弃P的同时也就意味着放弃了系统的扩展性,也就是分布式节点受限,没办法部署子节点,这是违背分布式系统设计的初衷的。传统的关系型数据库RDBMS:Oracle、MySQL就是CA。

    3.2、CP without A:如果不要求A(可用),相当于每个请求都需要在服务器之间保持强一致,而P(分区)会导致同步时间无限延长(也就是等待数据同步完才能正常访问服务),一旦发生网络故障或者消息丢失等情况,就要牺牲用户的体验,等待所有数据全部一致了之后再让用户访问系统。设计成CP的系统其实不少,最典型的就是分布式数据库,如Redis、HBase等。对于这些分布式数据库来说,数据的一致性是最基本的要求,因为如果连这个标准都达不到,那么直接采用关系型数据库就好,没必要再浪费资源来部署分布式数据库。

    3.3、 AP wihtout C:要高可用并允许分区,则需放弃一致性。一旦分区发生,节点之间可能会失去联系,为了高可用,每个节点只能用本地数据提供服务,而这样会导致全局数据的不一致性。典型的应用就如某米的抢购手机场景,可能前几秒你浏览商品的时候页面提示是有库存的,当你选择完商品准备下单的时候,系统提示你下单失败,商品已售完。这其实就是先在 A(可用性)方面保证系统可以正常的服务,然后在数据的一致性方面做了些牺牲,虽然多少会影响一些用户体验,但也不至于造成用户购物流程的严重阻塞。

    三、主要矛盾-Consistency和Availability

    CAP理论就是说在分布式存储系统中,最多只能实现上面的两点。而由于网络硬件肯定会出现延迟丢包等问题,所以分区容错性是我们必须需要实现的。所以我们只能在一致性和可用性之间进行权衡,没有NoSQL系统能同时保证这三点。对于web2.0网站来说,关系数据库的很多主要特性却往往无用武之地

    数据库事务一致性需求 —— 很多web实时系统并不要求严格的数据库事务,对读一致性的要求很低,有些场合对写一致性要求并不高。允许实现最终一致性。
    数据库的写实时性和读实时性需求 —— 对关系数据库来说,插入一条数据之后立刻查询,是肯定可以读出来这条数据的,但是对于很多web应用来说,并不要求这么高的实时性,比方说发一条消息之 后,过几秒乃至十几秒之后,我的订阅者才看到这条动态是完全可以接受的。
    对复杂的SQL查询,特别是多表关联查询的需求 —— 任何大数据量的web系统,都非常忌讳多个大表的关联查询,以及复杂的数据分析类型的报表查询,特别是SNS类型的网站,从需求以及产品设计角 度,就避免了这种情况的产生。往往更多的只是单表的主键查询,以及单表的简单条件分页查询,SQL的功能被极大的弱化了。

    4与数据库的关系

    传统的关系型数据库(CA)在功能支持上通常很宽泛,从简单的键值查询,到复杂的多表联合查询再到事务机制的支持。而与之不同的是,NoSQL系统通常注重性能和扩展性,而非事务机制(事务就是强一致性的体现)。
      传统的SQL数据库的事务通常都是支持ACID的强事务机制。A代表原子性,即在事务中执行多个操作是原子性的,要么事务中的操作全部执行,要么一个都不执行;C代表一致性,即保证进行事务的过程中整个数据库的状态是一致的,不会出现数据花掉的情况;I代表隔离性,即两个事务不会相互影响,覆盖彼此数据等;D表示持久化,即事务一旦完成,那么数据应该是被写到安全的,持久化存储的设备上(比如磁盘)。
      NoSQL系统仅提供对行级别的原子性保证,也就是说同时对同一个Key下的数据进行的两个操作,在实际执行的时候是会串行的执行,保证了每一个Key-Value对不会被破坏。

    5解决方案——BASE

    BASE是Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)三个短语的简写,BASE是对CAP中一致性和可用性权衡的结果。

    核心思想:即使无法做到强一致性(Strong consistency),但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性(Eventual consistency)。

    5.1、基本可用Basically Available

    基本可用是指分布式系统在出现不可预知故障的时候,允许损失部分可用性——但请注意,这绝不等价于系统不可用,以下两个就是“基本可用”的典型例子。

    响应时间上的损失:正常情况下,一个在线搜索引擎需要0.5秒内返回给用户相应的查询结果,但由于出现异常(比如系统部分机房发生断电或断网故障),查询结果的响应时间增加到了1~2秒。
    功能上的损失:正常情况下,在一个电子商务网站上进行购物,消费者几乎能够顺利地完成每一笔订单,但是在一些节日大促购物高峰的时候,由于消费者的购物行为激增,为了保护购物系统的稳定性,部分消费者可能会被引导到一个降级页面。
    5.2、软状态Soft state

    软状态也称弱状态,和硬状态相对,是指允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体可用性,即允许系统在不同节点的数据副本之间进行数据同步的过程存在延时。

    5.3、最终一致性Eventually consistent

    最终一致性强调的是系统中所有的数据副本,在经过一段时间的同步后,最终能够达到一个一致的状态。因此,最终一致性的本质是需要系统保证最终数据能够达到一致,而不需要实时保证系统数据的强一致性。

    展开全文
  • CAP定理 C:Consistency(一致性)、A: Availability(可用性)、P: Partition Tolerance(分区容错性) 一致性:所有的节点访问同一份数据副本。就是我写入的是什么,访问的数据就是什么。 可用性:在集群中一部分...
  • CAP定理与BASE理论

    2019-10-04 22:08:12
    CAP定理与BASE理论 CAP定理 2000 年 7 月,加州大学伯克利分校的 Eric Brewer 教授在 ACM PODC 会议上提出 CAP 猜想。2年后,麻省理工学院的 Seth Gilbert 和 Nancy Lynch 从理论上证明了 CAP。之后,CAP 理论正式...
  • MySQL CAP定理及使用场景

    千次阅读 2022-02-10 17:39:52
    1、什么是CAP定理 CAP定理,也称CAP原则,是一个衡量系统设计的准则。指在一个分布式系统中,一致性(consistency)、可用性(availability)、分区容错性(partition tolerance)三者不可兼得,最多只可得其二。 ...
  • CAP 定理简介

    2020-04-02 09:45:01
    CAP定理指的是一个分布式系统中, Consistency(一致性),Availability(可用性),Partition tolerance(分区容错性)三者不可兼得。 一致性C:分布式系统中多个主机之间是否能够保持数据一致的特性。即当系统数据...
  • 废话少说:什么是分布式系统举个小例一致性(Consistency)分区容错性(Partition tolerance)可用性(Availability)验证CAP理论有两种选择:如何权衡三选二利弊如何权衡三者的关键点取决于业务 什么是分布式系统...
  • 一文看懂CAP定理

    2020-03-15 16:53:54
    今天和大家介绍下CAP定理。 什么是CAP定理 在了解什么是CAP定理之前,我们分别看下C,A,P是什么? 一致性(Consistency):你对一个系统执行写操作后,紧接着的一次读操作能够获取正确的值。 可用性(Avaliablity...
  • 详解CAP定理与BASE理论

    2020-07-07 21:26:44
    CAP原则又称作CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance),这三个要素最多只能同时实现两点,不可能三者兼顾。 一致性(C):在...
  • CAP 定理的含义

    千次阅读 2018-07-22 13:12:12
    看到一篇很好的关于 CAP 定理的博文,顺便转发一下,by:阮一峰 分布式系统(distributed system)正变得越来越重要,大型网站几乎都是分布式的。 ...
  • 分布式理论-CAP定理

    2021-04-30 20:45:25
    CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性)Availab ility(可用性)、Partition tolerance(分区容错性)这三个基本需求,最多只能同时满足其中的2个。 文章目录
  • CAP定理简单介绍

    2019-02-01 14:22:01
    CAP又被称作布鲁尔定理,这个定理指出一个分布式系统,不可能同时满足: 1)一致性(Consistency)就是说在同一个时间不同结点访问同一份数据是最新的 2)可用性 (Availability)就是说这个系统能及时返回响应,...
  • 什么是CAP定理

    千次阅读 2021-01-12 14:02:24
    这是很简单的取舍,但正如“去中心”常被人们误解为“去掉所有中心”一样,人们也常常误读CAP定理中“三者只能居其二”的含义: CAP定理的确告诉我们:分布式系统中抓走可用性就意味着放手一致性,但并不说明用户想...
  • 1.什么是 CAP 定理 CAP 定理CAP theorem)又被称作「布鲁尔定理」,是加州大学伯克利分校的计算机科学家埃里克·布鲁尔(Eric Brewer)在 2000 年的 ACM PODC 上提出的一个猜想。2002 年,麻省理工学院的赛斯·...
  • 理解分布式CAP定理

    2020-12-09 16:33:29
    CAP原理 概念: C(一致性):指分布式系统中每个节点的数据备份在同一时刻保持一致。 A(可用性):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。 P(分区容忍性):系统不能在一定时间内完成数据的...
  • 分布式系统的CAP定理

    千次阅读 2022-02-08 20:24:35
    目前只要是大型互联网项目都是采用分布式结构,一个系统可能有多个节点组成,每个节点都可能需要维护一份数据。...CAP定理是分布式系统中最基础的原则。所以理解和掌握了CAP,对系统架构的设计至关重要。
  • 作者:奎哥来源:不止思考在计算机领域,如果是初入行就算了,如果是多年的老码农还不懂 CAP 定理,那就真的说不过去了。CAP可是每一名技术架构师都必须掌握的基础原则啊。现在只要是稍微大一点的互联网项目都是采用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,551
精华内容 5,420
关键字:

cap定理