• FLP、CAP和BASE


    FLP不可能原理

    FLP定理

    FLP Impossibility(FLP 不可能性)是分布式领域中一个非常著名的定理,定理的论文是由 Fischer, Lynch and Patterson 三位作者于1985年发表

    It is impossible to have a deterministic protocol that solves consensus in a message-passing asynchronous system in which at most one process may fail by crashing

    FLP的三大限定条件

    确定性协议

    Deterministic protocol,给定一个输入,一定会产生相同的输出

    异步网络通信

    同步通信:同时在线,允许超时

    异步通信:没有统一时钟、不能时间同步、不能使用超时、不能探测失败、消息可任意延迟、消息可乱序

    所有存活节点

    所有存活的节点必须最终达到一致性

    FLP的不可能三角

    Safety:系统中非故障节点达成了一致和合法的共识,又称Agreement

    Liveness:系统中非故障节点在有限的时间内能够达成共识,又称Termination

    Fault Tolerance:协议必须在节点故障的时候同样有效

    在这里插入图片描述

    SL系统:为了达成一致性,不允许节点失败

    SF系统:为了保证Safety,需要无限等待,因此无法保证Liveness

    LF系统:为了保证Liveness,不能无限等待,因此无法保证Safety

    Paxos违背了FLP吗?

    在这里插入图片描述

    CAP定理

    CAP定理

    CAP 定理(CAP theorem)又被称作布鲁尔定理(Brewer‘s theorem),是加州大学伯克利分校的计算机科学家埃里克·布鲁尔(Eric Brewer)在2000年的 ACM PODC 上提出的一个猜想

    2002年,麻省理工学院的赛斯·吉尔伯特(Seth Gilbert)和南希·林奇(Nancy Lynch)发表了布鲁尔猜想的证明,使之成为分布式计算领域公认的一个定理。对于设计分布式系统的架构师来说,CAP 是必须掌握的理论

    It is impossible for a distributed data store to simultaneously provide more than two out of the following three guarantees: Consistency, Availability, Partition tolerance

    分布式数据存储系统不可能同时满足一致性、可用性和分区容忍性

    CAP的不可能三角

    一致性:每次读取操作都会读取到最新写入的数据,或者返回错误

    可用性:每次请求都会得到非错请求,但不保证返回最新的数据

    分区容错性:系统在发生分区的时候继续提供服务

    在这里插入图片描述

    CA:为了达成数据一致性和系统可用性,不允许分区

    CP:系统分区的时候保证一致性,到无法保证可用性

    AP:系统分区的时候保证可用性,但无法保证数据一致性

    CAP的三大限定条件

    分布式

    分布式,可能发生网络分区

    数据存储

    通过复制来实现数据共享的存储系统

    同时满足

    同时满足CAP

    CAP细节

    复制延迟

    在这里插入图片描述

    理论上:CAP是忽略网络延迟的

    工程落地:PACELC猜想(Partition -> Availability, Consistency, Else -> Latency, Consistency.)

    描述粒度

    在这里插入图片描述

    CAP关注的是单个数据,不是整个系统,系统数据可以有的符合CP,有的符合AP

    更多

    正常情况下,可以满足CA,但是实际上有很小的时延

    放弃!=无为,需要为分区恢复后的数据恢复和业务恢复做好准备

    CAP的CA和ACID的CA定义完全不同,两者适应的领域也不同

    BASE理论

    BASE 是指基本可用(Basically Available)、软状态( Soft State)、最终一致性( Eventual Consistency),核心思想是即使无法做到强一致性(CAP 的一致性就是强一致性),但应用可以采用适合的方式达到最终一致性

    Basically Available:读写操作尽可能的可用,但写操作在冲突的时候可能丢失结果,读操作可能读取到旧的值

    Soft State:没有一致性的保证,允许系统存在中间状态,而该中间状态不会影响系统整体可用性,这里的中间状态就是CAP 理论中的数据不一致

    Eventually Consistency:如果系统运行正常且等待足够长的时间,系统最终将达成一致性的状态

    Eventual & Strong Consistency

    在这里插入图片描述

    BASE与CAP

    在这里插入图片描述

    BASE/CAP/FLP 落地

    在这里插入图片描述

  • 相关阅读:
    前端周刊第三十七期
    计算机毕业设计Java垂钓分享交流网的设计与实现(源码+系统+mysql数据库+lw文档)
    图解快速排序——通俗易懂(quick sort)
    盲人咖啡厅导航:科技之光点亮独立生活新里程
    以太网交换机自学习、转发帧的流程
    强化学习总结1 马尔科夫过程
    Revit如何使用插件实现【参数同步】?
    python爬虫(2)
    装配体的模态分析-SOLIDWORKS 2024新功能
    JS教程之 识别 JavaScript 数据类型:两种方法就足够了
  • 原文地址:https://blog.csdn.net/lee_nacl/article/details/127946641