关于P

P, 即 Partition字面意思是网络分区,其实 包括了 各种网络问题, 我们要把它理解 一个 广义的 分区问题。

P 涉及到了 时间, 这么说吧, 出现了分区, 那就是节点之间 “长久的” 不能通信, 出现 延迟、超时 就是 “暂时的” 不能通信 —— 到底多久才算是 超时呢? 所以说, 我们 通常需要 对 分布式系统 设定个 响应的 时间期限。(—— 其实这就增加的CAP 理解的难度)

P 是指系统必须要容易分区, 也就是 通常所谓的 分区容忍性, 也就是 允许失败的 节点个数。 从量化的理论来讲, 允许失败的 节点个数越多, 分区容忍性越好, P 值越高。

P 的理解 非常有技巧。P 恰恰 说明的是 可以允许 分区存在或 节点失败。 但是, 其实, 我们 容不容忍 都是TM 没有选择余地的!

出现分区问题的时候,可能出现2个分区, 也可能3个, 那么如何选择其中一个呢? 谁来做这个决定呢? 首先, 肯定是系统内部来决定的, 通常, 我们需要在分布式系统中设置一个 master, master 又是怎么来的呢? 是选举出来的! 如果出现了分区, 那 master 还是master 吗? 不是了, 我们需要重新选举? 选举又是如何进行的呢?  我们需要考虑 各种选举算法。

关于A、C

C和A之间选择不是0和1的选择,而是一种连续式选择

从上面的例子看,好像选择C就必须放弃A,反之亦然。但是其实所有这些都有中间方案。C和A的定义也有各种灰度定义。
比如C的定义,最严格的定义就是一个分布式事务结束后,所有的副本在任何时刻都是一致的。但是这个定义可以放宽。时间不在是同时,而是一段时间,给一个时间窗口。或者一阶段内可以不一致,但最终变成一致的。比如上面的例子中,在发生分区的时候,可以暂时不一致,等到通信问题解决了,开始恢复一致性。 而对于A的定义来说,也是有各种层次,在发生分区的时候,可以选择限制部分操作,同时提供一个些事后比较好恢复的操作。

  一种经典的系统设计模式

因为在分布式系统中,基本是没有办法选择不要分区的,所以为了保证系统的可用性,和一致性的博弈,经典的设计模式就是分情况对待。当不发生分区的时候保证完美的CA,到出现了分区,进入分区模式,等待分区恢复后,恢复系统,最终达到一致性后,再次进入完美CA状态。

---------------------
作者:miniDan__
来源:CSDN
原文:https://blog.csdn.net/physicsdandan/article/details/52118565
版权声明:本文为博主原创文章,转载请附上博文链接!

1 检测到分区开始
2 明确进入分区模式,限制某些操作,并且
3 当通信恢复后启动分区恢复过程
最后一步的目的是恢复一致性,以及补偿在系统分区期间程序产生的错误。

当系统进入到分区模式,它有两种可行的策略。其一是限制部分操作,因此会削弱可用性。其二是额外记录一些有利于后面分区恢复的操作信息。系统可通过持续尝试恢复通信来察觉分区何时结束。

小结

CAP 还是有一定的复杂性的,因为它是基础的理论, 当我们把各种问题考虑进去之后。情况变得复杂起来。

总之,CAP是非常骚的 理论, 非常扯淡、折腾人的理论。找到一些证据:

就是一个很混乱且缺乏解释力的理论,那么较劲干啥。

理论的原意大概是说你不可能设计一个系统在保证出现一些网络交换器故障导致一些批网络节点无法和另一批节点通信的情况下P依然保证数据一致性C,且保证服务可用A。

这理论听听就行了。如果你是个这个领域的新人,学会大规模系统里需要考虑交换机和路由器坏掉的情况就可以了。

参考:

https://www.zhihu.com/question/54105974?from=profile_question_card

https://blog.csdn.net/physicsdandan/article/details/52118565

分布式 基本理论 CAP 2的更多相关文章

  1. 分布式 基本理论 CAP 之 各分布式系统的cap支持情况

    分布式系统.理论.协议 非常非常多, 它们多cap 的支持是怎么样的呢? 需要注意的是,分布式系统 为了应付各种 复杂 应用场景,支持各种各样的功能,可能有的提供了选项或某种机制, 某个时刻,支持CP ...

  2. 分布式 基本理论 CAP

    谈及分布式,必然谈到 CAP, CAP 已经是被说烂了的一个 话题, 绕不开, 逃不掉.  而且, 理解起来 会有些吃力. 分布式的CAP理论告诉我们 “任何一个分布式系统都无法同时满足 一致性(Co ...

  3. 【转】分布式理论-CAP理论

    一 CAP理论简述 CAP (Consistency, Availability, Partition  Tolerance,) 理论是NoSQL数据库管理系统构建的基础.     强一致性:等同于所 ...

  4. 分布式事务的CAP理论 与BASE理论

    CAP理论 一个经典的分布式系统理论.CAP理论告诉我们:一个分布式系统不可能同时满足一致性(C:Consistency).可用性(A:Availability)和分区容错性(P:Partition ...

  5. [转帖]浅谈分布式一致性与CAP/BASE/ACID理论

    浅谈分布式一致性与CAP/BASE/ACID理论 https://www.cnblogs.com/zhang-qc/p/6783657.html ##转载请注明 CAP理论(98年秋提出,99年正式发 ...

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

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

  7. 分布式系统和CAP

    帽子理论(CAP): C:Consistency,一致性, 数据一致更新,所有数据变动都是同步的 A:Availability,可用性, 好的响应性能,完全的可用性指的是在任何故障模型下,服务都会在有 ...

  8. 分布式事务与Seate框架(1)——分布式事务理论

    前言 虽然在实际工作中,由于公司与项目规模限制,实际上所谓的微服务分布式事务都不会涉及,更别提单独部署构建Seata集群.但是作为需要不断向前看的我,还是有必要记录下相关的分布式事务理论与Seate框 ...

  9. 分布式:分布式事务(CAP、两阶段提交、三阶段提交)

    1 关于分布式系统 1.1 介绍 我们常见的单体结构的集中式系统,一般整个项目就是一个独立的应用,所有的模块都聚合在一起.明显的弊端就是不易扩展.发布冗重.服务治理不好做. 所以我们把整个系统拆分成若 ...

随机推荐

  1. MySQL Workbench 创建数据库,添加新表,添加字段

    建立数据库 第一步: 第二步: 第三步: 如图弹出弹框,继续点击Apply按钮,最后点击Finish按钮完成数据库的建立 创建表与添加字段 双击!!!  一下刚刚建立好的数据库,然后再创建表,不然会出 ...

  2. 软件开发者路线图梗概&书摘chapter5

    恒久学习:整个职业生涯,反馈回路,了解弱点 1.提高带宽:多维度.高效获取知识 博客.关注twitter动态.订阅邮件列表.加入本地用户组.技术大会.联系书的作者.在线教程 从信息的海洋中回到实际软件 ...

  3. GIT & VersionControl

    一.Git Git(读音为/gɪt/.)是一个开源的分布式版本控制系统,可以有效.高速地处理从很小到非常大的项目版本管理. [1]  Git 是 Linus Torvalds 为了帮助管理 Linux ...

  4. Merging one UE4 project into another.

    Merging can be done by right clicking on folder in the content directory in the editor and selecting ...

  5. EXCEL日期格式要双击一下单元格才变正确格式

    今天遇到标题问题,问度娘后看到一个大神的解答,特此记录整理. 步骤1:在excel中把文本格式日期改为想要的日期格式 步骤2:在旁边空格中输入1,并设置成日期格式,变成1900/1/1: 步骤3:复制 ...

  6. 3-Longest Substring Without Repeating Characters @LeetCode

    3-Longest Substring Without Repeating Characters @LeetCode 题目 题目中得到的信息有: 一段字符串找出不重复子串的最大长度,只需要长度信息. ...

  7. Linux 定时任务Crontab的使用

    1.准备好Java程序,导出为Jar文件 如myProject.jar 2.写Shell脚本 startTask.sh echo 'start...' cd  /home/root/yourFolde ...

  8. 【java】抽象类和接口区别

    1.语法层面上的区别 1)抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法: 2)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public sta ...

  9. React 生命周期及使用场景

    对比版本:16.4.0 VS 16.3.0 VS 16.2.0 发现最近几次React版本更改比较大,在为17.0的大版本作准备.总结了一下React生命周期函数的变化. 综合对比图如下: 各版本分别 ...

  10. Office2010安装出现“错误1907”的解决方法(未验证)

    http://bbs.pcbeta.com/viewthread-1627988-1-5.html 这个问题我遇到过.解决方法:1.安装时提示错误选择忽略,安装完成后.2.如果能正常使用OFFICE软 ...