• 分布式从ACID、CAP、BASE的理论推进


    ACID理论

    原⼦性(Atomicity)

    ⼀致性(Consistency)

    隔离性(Isolation)

    持久性(Durability)

    CAP理论

    (1) ⼀致性Consistency

    “all nodes see the same data at the same time”

    ⼀旦数据更新完成并成功返回客户端后,那么分布式系统中所有节点在同⼀时间的数据完全⼀致。

    特点

    1. 由于存在数据同步的过程,写操作的响应会有⼀定的延迟。

    2. 为了保证数据⼀致性会对资源暂时锁定,待数据同步完成释放锁定资源。

    3. 如果请求数据同步失败的结点则会返回错误信息,⼀定不会返回旧数据。

    (2) 可⽤性(Availability)

    “Reads and writes always succeed”

    服务⼀直可⽤,⽽且是正常响应时间。

    特点 所有请求都有响应,且不会出现响应超时或响应错误

    (3) 分区容错性(Partition tolerance)

    “the system continues to operate despite arbitrary message loss or failure of part of the system”

    分布式系统中,尽管部分节点出现任何消息丢失或者故障,系统应继续运⾏。

    通常分布式系统的各各结点部署在不同的⼦⽹,这就是⽹络分区,不可避免的会出 现由于⽹络问题⽽导致结点之间通信失败,此时仍可对外提供服务。

    特点 分区容忍性分是布式系统具备的基本能⼒。

    CAP的3选2的特性

    CA 放弃 P:如果不要求P(不允许分区),则C(强⼀致性)和A(可⽤性)是可以保证的。这样 分区将永远不会存在,因此CA的系统更多的是允许分区后各⼦系统依然保持CA。

    CP 放弃 A:如果不要求A(可⽤),相当于每个请求都需要在Server之间强⼀致,⽽P(分区)会导 致同步时间⽆限延⻓,如此CP也是可以保证的。很多传统的数据库分布式事务都属于这种模式。

    场景: 跨⾏转账,⼀次转账请求要等待 双⽅银⾏系统都完成整个事务才 算完成。

    AP 放弃 C:要⾼可⽤并允许分区,则需放弃⼀致性。⼀旦分区发⽣,节点之间可能会失去联系,为了 ⾼可⽤,每个节点只能⽤本地数据提供服务,⽽这样会导致全局数据的不⼀致性。现在众多的NoSQL 都属于此类。

    场景1: 淘宝订单退款。今⽇退款成功, 明⽇账户到账,只要⽤户可以接 受在⼀定时间内到账即可。

    场景2: 12306的买票。都是在可⽤性和 ⼀致性之间舍弃了⼀致性⽽选择 可⽤性。

    分布式的BASE理论

    Basically Available(基本可⽤)

    对响应上时间的妥协

    对功能损失的妥协

    Soft state(软状态)

    硬状态

    要求多个节点的数据副本都是⼀致的,这是⼀种"硬状态"

    软状态:

    允许系统中的数据存在中间状态,并认为该状态不影响系统的整体 可⽤性,即允许系统在多个不同节点的数据副本存在数据延迟。

    Eventually consistent(最终⼀致性)

    系统能够保证在没有其他新的更新操作的情况下,数据最终⼀定能够达到⼀致 的状态,因此所有客户端对系统的数据访问最终都能够获取到最新的值

    base是和ACID对⽴的:

    ACID 传统数据库 追求强⼀致性模型

    BASE ⼤型分布式系统 通过牺牲强⼀致性获得⾼可⽤性

  • 相关阅读:
    浅谈函数式编程
    理解Spark SQL(三)—— Spark SQL程序举例
    理解Spark SQL(二)—— SQLContext和HiveContext
    理解Spark SQL(一)—— CLI和ThriftServer
    理解Spark运行模式(三)(STANDALONE和Local)
    理解Spark运行模式(二)(Yarn Cluster)
    理解Spark运行模式(一)(Yarn Client)
    Java操作Excel:POI和EasyExcel
    MyBatis-Plus入门,看这一篇就足够了
    50道SQL面试题
  • 原文地址:https://www.cnblogs.com/peteremperor/p/13727192.html
Copyright © 2020-2023  润新知