同一个ip网站太多 seo,广东省农业农村厅官网首页,对网络平台的优化有哪些建议,做网站的一年能挣多少钱分布式事务的三阶段分别是准备阶段、预提交阶段和提交 / 回滚阶段#xff0c;以下是详细介绍#xff1a;
三阶段提交协议可以理解为两阶段提交协议的改良版#xff0c;是在协调者和参与者中都引入超时机制#xff0c;并且把两阶段提交协议的第一个阶段分成了两步: 询问以下是详细介绍
三阶段提交协议可以理解为两阶段提交协议的改良版是在协调者和参与者中都引入超时机制并且把两阶段提交协议的第一个阶段分成了两步: 询问然后再锁资源最后真正提交。
两阶段提交协议最早是分布式事务的专家Jim Gray在1978年的一篇文章Notes on Database Operating Systems中提及。两阶段提交协议可以保证数据的强一致性即保证了分布式事务的原子性所有结点要么全做要么全不做。许多分布式关系型数据管理系统采用此协议来完成分布式事务。它是协调所有分布式原子事务参与者并决定提交或取消回滚的分布式算法。同时也是解决一致性问题的算法。该算法能够解决很多的临时性系统故障包括进程、网络节点、通信等故障被广泛地使用。但是它并不能够通过配置来解决所有的故障在某些情况下它还需要人为的参与才能解决问题。两阶段提交协议存在的问题是,协调者在某些时刻如果失败了, 整个事务就会阻塞。于是Skeen发布了NonBlocking Commit Protocols 1981这篇论文论文指出在一个分布式的事务里面, 需要一个三阶段的提交协议来避免在两阶段提交中存在的阻塞问题。
准备阶段CanCommit 事务询问协调者向所有参与者发送包含事务内容的CanCommit请求询问是否可以执行事务提交操作并开始等待各参与者的响应。各参与者响应参与者收到CanCommit请求后会根据自身情况判断是否可以执行事务。如果参与者认为可以执行事务则返回Yes响应表示它准备好执行事务如果参与者无法执行事务例如因为资源不足、数据冲突等原因则返回No响应。 如果参与者能够执行任务那么返回协调者Yes状态 参与者不能执行任务返回No结束事务
预提交阶段PreCommit 执行事务操作如果协调者在准备阶段收到了所有参与者的Yes响应那么它会向所有参与者发送PreCommit请求进入预提交阶段。参与者在收到PreCommit请求后会执行事务操作但不会真正提交事务而是将事务操作结果记录到本地的事务日志中并释放部分事务资源但仍保持对事务的锁定状态以便后续可能的提交或回滚操作。响应预提交结果参与者执行完事务操作后会向协调者发送Ack响应表示事务操作已经执行完成。如果参与者在执行事务操作过程中出现了问题例如数据库故障、网络问题等导致无法执行事务操作那么它会向协调者发送No响应并回滚已经执行的事务操作。yes
提交 / 回滚阶段DoCommit/Abort 提交事务如果协调者在预提交阶段收到了所有参与者的Ack响应那么它会向所有参与者发送DoCommit请求通知参与者正式提交事务。参与者在收到DoCommit请求后会将事务正式提交到数据库中并释放所有事务资源完成事务操作。回滚事务如果协调者在准备阶段或预提交阶段收到了任何参与者的No响应或者在等待参与者响应的过程中出现了超时等情况那么它会向所有参与者发送Abort请求通知参与者回滚事务。参与者在收到Abort请求后会根据本地事务日志中的记录回滚已经执行的事务操作并释放所有事务资源。 三阶段提交协议相对于二阶段提交协议增加了预提交阶段使得分布式事务的提交过程更加稳健能够在一定程度上避免数据不一致的问题但它也增加了事务的复杂性和性能开销。 在分布式系统中为了协调多个节点共同参与的事务通常会采用三阶段提交协议3PC。关于三阶段提交协议以下哪个描述是正确的
A. 三阶段提交协议只包括准备提交Prepare和提交Commit两个阶段。 B. 在三阶段提交协议中如果有一个参与者回复不能提交No则事务协调者会立即中止事务。 C. 三阶段提交协议可以确保在所有参与者都成功提交事务之前任何参与者都不会单独提交事务。 D. 三阶段提交协议中的第三阶段是向所有参与者发送预提交PreCommit请求。
正确答案
C 参考
分布式事务讲解之CAP2PC3PCTCC分布式锁 - 上善若泪 - 博客园 (cnblogs.com)