分布式一致性原理学习笔记(2)

来源:互联网 发布:iosselect.js api 编辑:程序博客网 时间:2024/06/01 09:08

分布式一致性的相关理论

  • ACID
    1:原子性
    所有的操作结果只有两种状态:全部成功,全部不执行
    2:一致性
    数据的执行结果是一个状态跳转到另外一个状态。没有中间态。排除故障的状态
    3:隔离性
    并发隔离
    4:持久性
    一旦事务成功。其结果必将永久保存。
  • CAP
    1:一致性
    数据在不同节点的同步。 其中又分为 强一致性,弱一致性,最终一致性
    2:可用性
    对于请求的操作总是能进行可处理的返回。
    3:分区容错性
    遇到网络分区故障时候,仍然能保证对外提供满足一致性和可用性的服务。影响到系统的扩展性。
    三者只能最多满足两种。所以一般在设计阶段会放弃强一致性。
  • BASE
    1:基本可用
    出现不可预知故障的时候。将对系统的影响降级到响应时间上的损失和功能上的损失。
    2:软状态
    允许系统在不同节点的数据副本之间同步数据存在延时。
    3:最终一致性
    强调系统中节点的副本在一段时间的同步后,最终能达到一致的状态。

一致性协议

  • 2阶段提交
    阶段一 :提交事务请求
    1:事务访问
    协调者向所有参与者发送事务内容。询问是否可以执行事务操作。
    2:执行事务
    参与者执行事务操作。并记录入日志
    3:各参与者向协调者反馈事务询问的响应
    阶段二 :执行事务提交
    结果1:执行事务提交
    a:发送提交请求。
    b:事务提交
    c:反馈事务提交结果
    d:完成事务
    结果2:中断事务
    a:发送回滚请求
    b:事务回滚
    c:反馈回滚结果
    d:中断事务
    总的来说,二阶段提交时将事务分成两个极端。
    一个是尝试询问执行,另外一个是分配提交反馈。

此方式优点是 原理简单,实现方便
缺点:同步阻塞,单点问题,脑裂,保守。

  • 3阶段提交
    阶段一:CanCommit
    1:事务询问
    2:反馈事务询问相应
    阶段二:PreCommit
    两种可能:
    a:执行事务预提交
    1:发送预提交请求
    2:事务预提交
    3:反馈预提交执行响应
    b:中断事务
    1:发送中断请求
    2:中断事务
    阶段三:doCommit
    两种可能
    a:执行提交
    1:发送提交请求
    2:事务提交
    3:反馈事务提交结果
    4:完成事务
    b:中断事务
    1:发送中断请求
    2:事务回滚

相比二阶段提交协议,三阶段提交协议降低了参与则的阻塞访问。并避免了单点故障的影响
缺点:
接受preCommit后,如果网络出现分区。协调者于参与者不能有效地进行网络通信。那么,参与者依然会进行实物提交。可能导致数据的不一致性。

1 0
原创粉丝点击