关于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. html5 知识点简单总结03

    table表格 ----基本结构 table默认无边框(border) <table border="数值"> <tr> <th>表头</ ...

  2. python 使用pip安装使用国内镜像加速下载安装包的方法

    清华大学提供开源镜像站:https://mirrors.tuna.tsinghua.edu.cn/help/pypi/ pypi 镜像每 5 分钟同步一次. pip install 包的名字 == 版 ...

  3. 使用Postfix与Dovecot部署邮件系统

  4. Django学习笔记之视图高级-CSV文件生成

    生成CSV文件 有时候我们做的网站,需要将一些数据,生成有一个CSV文件给浏览器,并且是作为附件的形式下载下来.以下将讲解如何生成CSV文件. 生成小的CSV文件 这里将用一个生成小的CSV文件为例. ...

  5. Asp.Net : Page.RegisterStartupScript及 不执行的原因

    RegisterStartupScript 把script放置在ASP.NET page的底部,而RegisterClientScriptBlock把script放置在ASP.NET page的顶部 ...

  6. SparkStream:4)foreachRDD详解

    转载自:http://blog.csdn.net/jiangpeng59/article/details/53318761 foreachRDD通常用来把SparkStream运行得到的结果保存到外部 ...

  7. python中防止字符串转义

    有学生问了个问题,试了好多办法都不行,搜也搜不到,只能自己尝试了,顺利解决. 问题描述: 如果一个字符串包含转义字符,如“adfdfasd\tfdsadf\t”,正常print会将\t看作转义字符ta ...

  8. 单例模式实例&多线程应用

    单例模式是指:对于一个类在内存中只能存在唯一一个对象,这种设计模式叫做单例设计模式. 单例设计模式的写法: 1. 设置私有(private)的构造方法. 2. 实例化一个该类的对象作为成员变量,并设置 ...

  9. GCD学习

    出自简书 : https://www.jianshu.com/p/2d57c72016c6 在 GCD 中有两种队列:串行队列和并发队列.两者都符合 FIFO(先进先出)的原则.两者的主要区别是:执行 ...

  10. ROS tf

    一.节点中使用(cpp,python) 1. ros wiki 提供的tutorials 2. https://blog.csdn.net/start_from_scratch/article/det ...