Transactions 2PC vs Sagas(分布式事务)
我正在深入了解分布式系统,以及如何在这些系统之间保持数据一致性,其中业务事务涉及多个服务、有界上下文和网络边界 我知道有两种方法可用于实现分布式事务:Transactions 2PC vs Sagas(分布式事务),transactions,cloud,microservices,distributed-computing,saga,Transactions,Cloud,Microservices,Distributed Computing,Saga,我正在深入了解分布式系统,以及如何在这些系统之间保持数据一致性,其中业务事务涉及多个服务、有界上下文和网络边界 我知道有两种方法可用于实现分布式事务: 两阶段提交(2PC) 传奇 2PC是应用程序通过平台支持透明地利用全局ACID事务的协议。据我所知,它嵌入到平台中,对业务逻辑和应用程序代码是透明的 另一方面,Sagas是一系列本地事务,其中每个本地事务都会变异并持久化实体,以及指示全局事务阶段的一些标志,并提交更改。换句话说,事务的状态是域模型的一部分。回滚是提交一系列“反向”事务的问题。
- 两阶段提交(2PC)
- 传奇
- 通常,2PC用于即时事务
- 通常,saga用于长时间运行的事务
- 2PC允许您在一个请求中提交整个事务,跨越整个系统和网络。假设每个参与系统和网络都遵循该协议,您可以无缝地提交或回滚整个事务
- Saga允许您将事务拆分为多个步骤,跨越较长的时间段(不一定是系统和网络)
- 2PC:为每个收到的发票请求保存客户,而这两个请求都由两个不同的系统管理
- 佐贺:预订由多个中转航班组成的航班行程,而每个航班由不同的航空公司运营
我认为传奇是通用的,而2PC涉及平台/供应商锁定。有趣。。。没有答案,也没有接近票数…答案不错,但由于Sagas能够实现2PC所能做的,因此它们有实现重做机制的开销。我对你回答的最后一句话感到批评:D最后一句话谈到了供应商锁定与保持通用性和平台独立性。你到底觉得什么不准确?在这种情况下,你是对的。2PC缺乏平台独立性——很好的解释。