我正在研究微服务架构。我知道有3种方法:
2阶段提交
佐贺
最终一致性
我对 2 阶段提交方法和 saga 方法有疑问。
在 2 阶段提交中,我们有事务管理器。在 saga 方法中,我们有 saga 日志和 saga SEC。两种方式我们都将责任交给了中央系统。那么具体有什么区别。
我正在研究微服务架构。我知道有3种方法:
2阶段提交
佐贺
最终一致性
我对 2 阶段提交方法和 saga 方法有疑问。
在 2 阶段提交中,我们有事务管理器。在 saga 方法中,我们有 saga 日志和 saga SEC。两种方式我们都将责任交给了中央系统。那么具体有什么区别。
据我了解,Sagas 用于长期交易。换句话说,这可能是一个分布式系统问题的解决方案,需要在内部或外部协调各种系统后才能完成。基本思想是将整个事务分解为多个步骤或活动。这些步骤可以在原子事务(工作单元)中执行,并且可以通过实现重做机制来撤消/回滚。由于整个事务被拆分为多个工作单元,因此各个单元之间没有阻塞。这种非阻塞性质允许长期交易在几分钟/几小时甚至几天内完成。
在 2 PC 中,协议分两阶段工作,两阶段提交协议的最大缺点是它是一个阻塞协议。这在业务系统中是可以接受的(服务之间的事务会相当快),但对于长期存在或协调分布式事务来说并不理想。
Saga 用例:如果您是提供度假套餐的旅行社,您的预订系统必须能够完成端到端的套餐处理。这包括您的服务、住宿、短途旅行、航班、食物、场地等。在典型的场景中,旅行社系统需要在内部和外部业务之间执行一系列协调才能完成一笔交易,或者如果其中一个交易回滚参与企业未能服务。
2 PC 用例:当客户的产品准备好从商店取货时,会向客户发送一封电子邮件确认,假设每项任务由多个系统处理。