设为首页 加入收藏

TOP

《分布式技术原理与算法解析》学习笔记Day06(二)
2023-07-26 08:16:51 】 浏览:84
Tags:《分布式技术原理与算法解析》 习笔记 Day06
接收到所有参与者的ACK响应,则向所有参与者发送DoCommit消息,开始执行阶段。
  • 参与者接收到DoCommit消息后,正式提交事务,完成事务提交后,释放所有锁住的资源,并向协调者发送ACK响应。
  • 协调者接收到所有参与者的ACK响应后,完成事务。
  • 中断事务阶段:
    • 协调者向所有参与者发送Abort请求。
    • 参与者接收到Abort消息后,利用其在PreCommit阶段记录的Undo信息执行事务的回滚操作,释放所有锁住的资源,并向协调者发送ACK消息。
    • 协调者接收到所有参与者发送的ACK响应,执行事务中断操作,并结束事务。
  • 3PC协议在协调者和参与者都引入了超时机制,当参与者在预提交阶段向协调者发送ACK消息后,如果长时间没有得到协调者的响应,在默认情况下,参与者会自动降超时事务进行提交,从而减少整个集群的阻塞时间。

    三阶段提交仍然会存在数据不一致的情况。

    基于分布式消息的最终一致性方案

    2PC和3PC的核心思想都是以集中式的方式实现分布式事务,它有两个缺点:

    • 同步执行,性能差
    • 数据不一致问题

    我们解决一致性问题的核心思想:将需要分布式处理的事务通过消息或者日志的方式异步执行,消息或日志可以存到本地文件、数据库或者消息队列中,再通过业务规则进行失败重试。

    基于分布式消息的最终一致性方案的事务处理,引入了一个消息中间件,用于在多个应用之间进行消息传递。

    这种方案采用消息传递机制,并使用异步通信的方式,避免了通信阻塞,从而增加系统的吞吐量,同时它还可以屏蔽不同系统的协议规范,使其可以直接交互。

    在不需要请求立即返回结果的场景下,这些特性就带来了明显的通信优势,并且通过引入消息中间件,实现了消息生成方本地事务和消息发送的原子性,采用最终一致性方式,只需保证数据最终一致即可,一定程度上解决了2PC和3PC因为强一致性而在某些情况下导致数据不一致的问题。

    针对上述三种不同的分布式事务方法,详细的比较如下表所示。

    首页 上一页 1 2 下一页 尾页 2/2/2
    】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
    上一篇读Java实战(第二版)笔记03_引入.. 下一篇Redis的十六种应用场景

    最新文章

    热门文章

    Hot 文章

    Python

    C 语言

    C++基础

    大数据基础

    linux编程基础

    C/C++面试题目