三阶段提交协议
三阶段提交协议
三阶段提交协议是两阶段提交协议的改进版本。它通过超时机制解 决了阻塞的问题,并且把两个阶段增加为以下三个阶段。 询问阶段:协调者询问参与者是否可以完成指令,参与者只需要 回答是或不是,而不需要做真正的操作,这个阶段超时会导致中止。 准备阶段:如果在询问阶段所有参与者都返回可以执行操作,则 协调者向参与者发送预执行请求,然后参与者写redo和undo日志,执行 操作但是不提交操作;如果在询问阶段任意参与者返回不能执行操作的 结果,则协调者向参与者发送中止请求,这里的逻辑与两阶段提交协议 的准备阶段是相似的。 提交阶段:如果每个参与者在准备阶段返回准备成功,也就是说 预留资源和执行操作成功,则协调者向参与者发起提交指令,参与者提 交资源变更的事务,释放锁定的资源;如果任何参与者返回准备失败, 也就是说预留资源或者执行操作失败,则协调者向参与者发起中止指 令,参与者取消已经变更的事务,执行 undo 日志,释放锁定的资源, 这里的逻辑与两阶段提交协议的提交阶段一致。
三阶段提交协议与两阶段提交协议主要有以下两个不同点。 · 增加了一个询问阶段,询问阶段可以确保尽可能早地发现无法执行操作而需要中止的行为,但是它并不能发现所有这种行为,只会减少 这种情况的发生。 · 在准备阶段以后,协调者和参与者执行的任务中都增加了超时, 一旦超时,则协调者和参与者都会继续提交事务,默认为成功,这也是 根据概率统计超时后默认为成功的正确性最大。 三阶段提交协议与两阶段提交协议相比,具有如上优点,但是一旦 发生超时,系统仍然会发生不一致,只不过这种情况很少见,好处是至 少不会阻塞和永远锁定资源。
本文来自博客园,作者:{咏南中间件},转载请注明原文链接:https://www.cnblogs.com/hnxxcxg/p/14679695.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?