news 2026/4/23 12:09:54

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/23 12:03:30

15、SOA 集成模式与反模式深度解析

SOA 集成模式与反模式深度解析 1. 服务集成模式概述 在服务集成领域,有几种关键模式能让服务协同工作,形成一个有机系统,而非一堆松散的服务或难以维护的混乱局面。以下是这些重要模式的介绍: - 服务总线(Service Bus) :它允许服务以松耦合的方式进行连接。就像一个…

作者头像 李华
网站建设 2026/4/23 12:02:32

18、系统构建案例分析:SOA 模式的应用与实践

系统构建案例分析:SOA 模式的应用与实践 1. 案例背景与系统需求演变 在当今数字化时代,系统的需求往往随着业务的发展而不断变化。最初,系统仅需处理 3G 视频通话中的识别以及少量链接。随着业务的拓展,陆续增加了对 SMS 和电子邮件的支持,随后又需要处理大量链接,并为…

作者头像 李华
网站建设 2026/4/19 18:48:33

如何快速掌握QuPath数字病理分析:新手的终极完整指南

如何快速掌握QuPath数字病理分析:新手的终极完整指南 【免费下载链接】qupath QuPath - Bioimage analysis & digital pathology 项目地址: https://gitcode.com/gh_mirrors/qu/qupath 在数字病理学快速发展的今天,掌握一款专业的生物图像分析…

作者头像 李华
网站建设 2026/4/22 11:06:32

Android Studio中文界面终极配置指南

Android Studio中文界面终极配置指南 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本) 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePack 还在为Android Studio满屏的英文界面发愁吗&…

作者头像 李华
网站建设 2026/4/22 14:59:15

ParquetViewer终极指南:无需代码轻松查看大数据文件

ParquetViewer终极指南:无需代码轻松查看大数据文件 【免费下载链接】ParquetViewer Simple windows desktop application for viewing & querying Apache Parquet files 项目地址: https://gitcode.com/gh_mirrors/pa/ParquetViewer 在大数据时代&#…

作者头像 李华
网站建设 2026/4/22 14:21:10

PyTorch/TensorFlow启动失败?聚焦libcudart.so 11.0缺失场景

PyTorch/TensorFlow 启动失败?别慌,一文搞懂 libcudart.so.11.0 缺失的根源与解法 你有没有在深夜调试模型时,刚写下一行 import torch ,终端却冷冷地抛出这样一句: ImportError: libcudart.so.11.0: cannot op…

作者头像 李华