网工干货知识

超全学习笔记
当前位置:首页 > 干货知识

分布式系统中的原子提交协议

更新时间:2026年03月27日   作者:spoto   标签(Tag):

在分布式系统中,事务一致性是通过原子提交协议来保障的。该协议协调了两个阶段的工作:投票和决策。这样,就可以确保某个事务要么完全被成功执行,要么完全被取消,而不会在多个节点上产生任何混乱或错误。

分布式事务

分布式事务指的是涉及多个服务器的事务处理过程。 在简单分布式事务中,客户端会调用多个服务器;而在嵌套事务中,一个服务器则会调用另一个服务器。 在多个地点执行交易时,要么在所有地点都完成该交易,要么在所有地点都放弃该交易。 不过,当一笔交易在一个站点上被成功执行,而在另一个站点上又被取消时,就不应该出现这种情况了。 分布式站点系统采用分布式承诺规则来确保各个站点的操作具有原子性。 原子级承诺是一种促进各种系统之间合作的方式。

分布式事务的特性

分布式事务必须具备以下条件:ACID特性就像其他任何交易一样,在分布式系统中,也会使用事务管理器来协调各种操作。根据需要,事务管理器会负责提交或回滚这些操作。

  • 原子性:所有的数据更改都被视为一次性的操作。也就是说,要么所有的修改都被执行,要么根本不执行任何修改。这种原子性特性确保了:如果某个账户成功进行了借记操作,那么另一个账户上也会相应地进行贷记操作,从而实现资金从一个账户转移到另一个账户的目的。
  • 一致性:这意味着,当一笔交易开始和结束时,数据的状态是一致的。例如,在需要将资金从一个账户转移到另一个账户的应用程序中,这种机制可以确保交易开始和结束时数据的价值保持不变。
  • 隔离:在这种环境下,同时运行的事务似乎被序列化了。例如,隔离特性确保了两个账户之间传输的资金只能被其中一个账户中的事务看到,而不会被另一个账户中的事务看到,或者根本不会被任何事务看到。
  • 耐用性:即使系统出现故障,一旦交易成功完成,对数据的修改也会保持不变,不会被撤销。这样就能确保,在将资金从一个账户转移到另一个账户的过程中,对每个账户所做的修改都不会被撤销。

分布式事务中的协调问题

在分布式事务的协调过程中,其中一台服务器会担任协调者角色,而其余的服务器则共同承担协调者的职责。

  • 在简单的交易中,第一个服务器充当了协调器的角色。
  • 在嵌套事务中,最高层的服务器充当协调器角色。
  • 协调员的角色:协调员负责跟踪参与交易的服务器情况,收集各参与方的反馈信息,然后做出决策以确保交易的顺利进行。
  • 工人的角色:工人们都知道协调员的存在,他们会将自己的工作成果汇报给协调员,然后按照协调员的决定来执行。

原子性提交

原子提交过程应满足以下要求:

  • 所有做出选择的参与者都会得出相同的结论。
  • 如果有任何参与者决定参与,那么其他所有参与者都必须投票支持该提议。
  • 如果所有参与者都投票赞成,那么就不会发生失败的情况。在这种情况下,所有参与者都会决定继续坚持下去。

分布式单阶段提交

这种一阶段承诺协议中,有一个协调者负责与服务器进行通信,并定期执行各项任务,以通知服务器是否执行或取消某些操作,也就是所谓的“交易”。

单阶段提交

分布式两阶段提交

在提交流程中,需要经历两个阶段才能完成整个操作:

第一阶段:投票

  • 协调器会向每个参与工作的员工发送一条“准备消息”。
  • 协调员必须等待,直到从每个工作人员那里收到关于任务是否已完成的通知,或者达到超时时间为止。
  • 工人们必须等待,直到协调员发出“准备就绪”的信号。
  • 如果某个事务已经准备好被提交,那么就会向协调器发送一个“已准备就绪”的消息。
  • 如果某个事务尚未准备好被提交,那么就会向协调器发送一个“拒绝”消息,从而导致该事务被中止。

第二阶段:完成投票结果的统计工作

  • 在这个阶段,协调员会检查各个工作节点是否发送了“已准备就绪”的消息。如果所有工作节点都发送了此类消息,那么才会向每个工作节点发送“已提交”的消息;否则,就会向每个工作节点发送“中止”的消息。
  • 现在,请等待确认信息,直到从每个工人那里收到确认消息为止。
  • 在这个阶段,工人们需要等待协调员发送“提交”或“中止”的消息。收到消息后,他们再根据消息的内容采取相应的行动。
  • 最后,工人们向协调员发送了确认函。
两阶段提交

结论

总而言之,原子提交协议对于确保事务的可靠性和一致性至关重要。分布式系统其主要目标是确保:即使在发生故障时,所有参与节点的交易要么完全执行完成,要么完全被取消。

              马上抢免费试听资格
意向课程:*必选
姓名:*必填
联系方式:*必填
QQ:
思博SPOTO在线咨询

相关资讯

即刻预约

免费试听-咨询课程-获取免费资料