Skip to Content
软件架构:核心挑战
book

软件架构:核心挑战

by Neal Ford, Mark Richards, Pramod Sadalage, Zhamak Dehghani
May 2025
Beginner to intermediate
462 pages
5h 45m
Chinese
O'Reilly Media, Inc.
Book available
Content preview from 软件架构:核心挑战

第 12 章 交易传奇 交易传奇

本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com

Thursday, March 31, 16:55

奥斯汀在一个刮风的周四下午很晚才出现在洛根的办公室。"艾迪森让我来问你一些恐怖故事?"

洛根停下脚步,抬起头。"这是在描述你这个周末要做的疯狂极限运动吗?这次又是什么?"

"现在是暮春时节,我们一群人要去解冻的湖面上滑冰。我们穿着紧身衣,所以实际上是滑冰和游泳的结合。但 Addison 完全不是这个意思。当我给艾迪生看我设计的票务工作流程时,他立刻指示我来找你,告诉你我创造了一个恐怖故事。"

洛根笑了。"哦,我明白怎么回事了--你偶然发现了恐怖故事传奇的通信模式。你设计了一个具有异步通信、原子事务性和编排的工作流,对吗?"

"你怎么知道?"

"这就是恐怖故事传奇模式,或者说是反模式。我们有八种通用的传奇模式,知道它们是什么很好,因为每种模式都有不同的平衡取舍。

架构中的传奇概念早于微服务, ,最初关注的是限制早期分布式架构中数据库锁的范围--人们普遍认为是 1987 年 ACM 会议记录中的论文创造了这一概念。Chris Richardson 在其《微服务模式》(Microservices Patterns,Manning Publications)一书中,以及在其网站的"传奇模式 "部分中,将微服务的传奇模式描述为一系列本地事务,其中每次更新都会发布一个事件,从而触发序列中的下一次更新。如果其中任何一次更新失败,传奇就会发布一系列补偿更新,以撤销传奇期间所做的先前更改。

不过,回顾第 2 章,这只是八种可能的传奇类型之一。在本节中,我们将深入探讨事务性传奇的内部运作以及如何管理它们,尤其是在发生错误时。毕竟,由于分布式事务缺乏原子性(请参阅"分布式事务"),它们的有趣之处在于出现问题时。

交易传奇模式

第 2 章中,我们介绍了一个矩阵,该矩阵将 中各交叉维度并列在一起,当架构师必须选择如何实现事务传奇时,该矩阵如表 12-1 所示。

表 12-1. 分布式架构的维数交叉矩阵
模式名称 交流 一致性 协调

史诗传奇

同步

原子

管弦乐队

电话标签传奇(囊)

同步

原子

编舞

童话传奇(seo)

同步

最终

管弦乐队

时空旅行传奇(秒)

同步

最终

编舞

奇幻小说传奇(aao)

异步

原子

管弦乐队

恐怖故事》(AAC)

异步

原子

编舞

平行传奇

异步

最终

管弦乐队

传奇选集》(aec)

异步

最终

编舞

我们为每种组合提供了异想天开的名称,这些名称均源自传奇类型。然而,模式名称的存在是为了帮助区分各种可能性,我们不想提供一个将模式名称与一系列特征联系起来的记忆测试,因此我们在每个传奇类型中添加了一个上标,表示按字母顺序列出的三个维度的值(如表 12-1 所示)。例如,Epic Saga(sao)模式表示通信、一致性和协调 同步原子和协调值。上标可帮助您更轻松地将名称与字符集关联起来。

虽然建筑师会更多地使用其中的一些模式,但它们都有合理的用途和不同的取舍。

我们用 空间中三种力量交汇的三维表示法以及使用通用分布式服务的工作流程示例(我们称之为同构图)来说明每种可能的通信组合。这些图表以最通用的方式展示了服务之间的交互,实现了我们以最简单的形式展示架构师概念的目标。在每个图表中,我们都使用了图 12-1 所示的一组通用符号。

图 12-1. ISO 架构交互图的图例

对于每一种架构模式,我们都不会展示每一种可能的交互,否则就会变得重复。相反,我们会找出并说明该模式的不同特点--是什么使其行为在各种模式中独一无二。 ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

掌握API架构

掌握API架构

James Gough, Daniel Bryant, Matthew Auburn
SQL经典实例(第2版)

SQL经典实例(第2版)

Anthony Molinaro, Robert de Graaf

Publisher Resources

ISBN: 9798341656741