news 2026/6/12 15:13:20

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/6/9 21:17:29

CAPL快速理解:CANoe环境下的事件驱动机制

深入理解CAPL的事件驱动机制:让CANoe仿真更高效、更智能在汽车电子开发中,你是否曾为复杂的通信逻辑而头疼?是否写过一堆轮询代码,只为判断某个报文有没有来?又或者,在测试ECU时,总感觉脚本像“…

作者头像 李华
网站建设 2026/6/9 10:50:49

19、深入解析SOA与REST、云技术的融合与挑战

深入解析SOA与REST、云技术的融合与挑战 在当今的软件开发领域,面向服务的架构(SOA)是一种广泛应用的设计理念。然而,随着技术的不断发展,SOA面临着来自REST架构、云计算等新兴技术的挑战与机遇。下面将详细探讨SOA与REST、云技术的关系及应用。 1. 服务监控与架构模式的…

作者头像 李华
网站建设 2026/6/10 22:04:44

20、SOA与云及大数据的融合应用探索

SOA与云及大数据的融合应用探索 1. SOA与云的结合 在实际项目中,曾遇到将服务部署在Windows Azure的不同场景,如预发布和生产环境。使用Windows Azure的虚拟IP切换功能将预发布服务器迁移到生产环境时,新的生产服务(原预发布服务)仍指向预发布数据存储和证书存储。通过另…

作者头像 李华
网站建设 2026/6/9 21:15:52

Windows 11 24H2 LTSC 系统如何快速恢复 Microsoft Store 功能?

Windows 11 24H2 LTSC 系统如何快速恢复 Microsoft Store 功能? 【免费下载链接】LTSC-Add-MicrosoftStore Add Windows Store to Windows 11 24H2 LTSC 项目地址: https://gitcode.com/gh_mirrors/ltscad/LTSC-Add-MicrosoftStore 你是否正在使用 Windows 1…

作者头像 李华
网站建设 2026/6/12 6:42:23

魔兽世界插件开发完全手册:3分钟掌握API查询与宏命令管理

魔兽世界插件开发完全手册:3分钟掌握API查询与宏命令管理 【免费下载链接】wow_api Documents of wow API -- 魔兽世界API资料以及宏工具 项目地址: https://gitcode.com/gh_mirrors/wo/wow_api 还在为魔兽世界插件开发中的API查询和宏命令管理而烦恼吗&…

作者头像 李华