news 2026/4/18 7:53:03

10、Saga模式:解决分布式服务交互难题

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
10、Saga模式:解决分布式服务交互难题

Saga模式:解决分布式服务交互难题

1. 问题提出

在处理服务请求时,事务性服务模式能让服务可靠地处理请求,但它只能解决部分问题。以电商场景中的订单服务为例,前端向订单服务发送订单,订单服务在处理请求的内部事务中,需要与内部的计费服务和外部的供应商系统进行交互。具体流程如下:
1. 前端发送订单请求(步骤1.0)。
2. 订单服务接收消息(步骤2.1),开始处理订单(步骤2.2),向供应商系统下订单(步骤2.3),向计费服务请求计费(步骤2.4),最后提交事务(步骤2.5)。

这里存在两个主要问题:
-事务回滚问题:如果订单服务在步骤2.5不提交内部事务而是中止,会产生什么影响?
-服务承诺问题:订单服务如何从其他服务获得承诺,以便继续工作?例如,在向客户确认订单之前,需要获得供应商关于所订物品已确保供应的确认。

一种明显的解决方案是将订单服务的内部事务扩展到其他服务,形成分布式事务。使用分布式事务时,订单服务需将计费服务和供应商系统的调用作为单个事务的一部分,如果所有服务都同意提交,整个事务才会提交完成。然而,这种方法存在诸多问题:
-服务操作不确定性:无法对其他服务的操作方式做出假设,尤其是非自有服务。例如,供应商可能需要高级经理授权才能完成交易,等待过程中会持有内部资源锁,可能影响业务。
-长事务问题:服务间交互越复杂,原子事务的弊端越明显。大量消息在服务间来回传递会增加延迟和失败的可能性,但交互过少又不现实,因为服务间需要互操作性。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 6:25:07

屏幕翻译神器Translumo:3步开启无障碍多语言体验

屏幕翻译神器Translumo:3步开启无障碍多语言体验 【免费下载链接】Translumo Advanced real-time screen translator for games, hardcoded subtitles in videos, static text and etc. 项目地址: https://gitcode.com/gh_mirrors/tr/Translumo 还在为游戏中…

作者头像 李华
网站建设 2026/4/18 1:37:00

Recaf:新手也能轻松掌握的Java反编译神器

Recaf:新手也能轻松掌握的Java反编译神器 【免费下载链接】Recaf Col-E/Recaf: Recaf 是一个现代Java反编译器和分析器,它提供了用户友好的界面,便于浏览、修改和重构Java字节码。 项目地址: https://gitcode.com/gh_mirrors/re/Recaf …

作者头像 李华
网站建设 2026/4/17 12:47:59

Dify平台在图书馆智能检索系统升级中的应用构想

Dify平台在图书馆智能检索系统升级中的应用构想 如今,走进任何一座现代化图书馆,你可能会发现一个矛盾现象:馆藏资源越来越丰富,数字文献动辄百万级,但读者找到真正所需信息的难度却并未降低。许多用户仍需在多个数据库…

作者头像 李华
网站建设 2026/4/11 9:28:37

4、软件系统开发的关键要素与成功之道

软件系统开发的关键要素与成功之道 在软件系统开发领域,要实现向“新业务模式”的转变,我们需要建立一套相关的概念词汇体系。下面为大家详细介绍一些软件系统开发中的重要概念。 软件及相关概念 软件的定义 :传统观念里,软件被视为安装在计算机硬件上,能让硬件完成预…

作者头像 李华
网站建设 2026/4/15 20:09:48

7、软件项目规划:从理论到实践的全面指南

软件项目规划:从理论到实践的全面指南 在软件系统开发的领域中,有效的项目规划至关重要。项目规划不仅仅是一份静态的文档,更是一个动态的过程,需要不断适应变化,以确保项目的成功。本文将深入探讨软件项目规划的关键要点,包括规划的核心思想、生命周期的作用等内容。 …

作者头像 李华
网站建设 2026/4/15 18:07:49

Kodi字幕库插件完全指南:5分钟打造完美观影体验

Kodi字幕库插件完全指南:5分钟打造完美观影体验 【免费下载链接】zimuku_for_kodi Kodi 插件,用于从「字幕库」网站下载字幕 项目地址: https://gitcode.com/gh_mirrors/zi/zimuku_for_kodi 还在为找不到合适的字幕而烦恼吗?Kodi字幕库…

作者头像 李华