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 软件架构:核心挑战

第 10 章 分布式数据访问 分布式数据访问

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

Monday, January 3, 12:43

"Sydney 说:"既然我们已经将专家档案表的所有权分配给了用户管理服务 ,那么票务分配服务应该如何获取专家位置和技能数据呢?正如我之前所说,由于数据库的读取次数较多,每次需要查询表时都进行远程调用确实不可行。

"你能修改分配算法的工作方式,让我们减少它所需的查询次数吗?"艾迪生问道。

"问倒我了,"希尼回答道。"通常是泰伦在维护这些算法。"

Addison 和 Sydney 与 Taylen 会晤,讨论数据访问问题,并研究 Taylen 能否修改专家分配算法,以减少对专家档案表的数据库调用次数。

"你在开玩笑吗?"泰伦问道。"我不可能重写作业算法来实现你的要求。绝对不可能。"

"Addison 说:"但我们唯一的选择是,每次分配算法需要专家数据时,都要远程调用用户管理服务。

"什么?"泰伦尖叫道。"我们不能这么做!"

"我也是这么说的,"悉尼说。"这意味着我们又回到了起点。这种分布式架构很难。我不想这么说,但实际上我开始怀念单体应用程序了。等等,我知道了。如果我们不使用 REST,而是以消息方式调用用户维护服务呢?

"那是一回事,"Taylen 说。"无论我们使用的是消息传递、REST 还是其他远程访问协议,我都必须等待信息反馈。该表只需与票务表位于同一数据域即可。

"一定还有其他办法可以访问我们不再拥有的数据,"艾迪森说。"让我问问洛根。"

在大多数使用单一数据库的单体系统中,开发人员不会考虑读取数据库表。SQL 表连接是司空见惯的事情,通过简单的查询,一次数据库调用就能检索到所有必要的数据。然而,当数据被分割成独立的数据库或模式,由不同的服务所拥有时,读取操作的数据访问就开始变得困难。

本章将介绍服务对其不拥有的数据进行读取访问的各种方式,换句话说,就是在需要数据的服务的边界上下文之外进行读取访问。本章讨论的四种数据访问模式包括服务间通信模式、列模式复制模式、复制缓存模式和数据域模式。

这些数据访问模式各有利弊。是的,又是权衡。为了更好地描述每种模式,我们将回到第 9 章中的 Wishlist 服务和目录服务示例。图 10-1所示的 Wishlist 服务负责维护客户可能想要最终购买的物品列表,其中包含相应 Wishlist 表中的客户 ID、物品 ID 和物品添加日期。目录服务负责维护公司销售的所有物品,包括物品 ID、物品描述和静态产品尺寸信息,如重量、高度、长度等。

在此示例中,当客户请求在其愿望清单中显示物品时,物品 ID物品描述 (item_desc) 都会返回给客户。但是,Wishlist 服务的表中并没有项目描述;该数据由目录服务拥有,目录服务是一个提供变更控制和数据所有权的严密的有界上下文。因此,架构师必须使用本章概述的数据访问模式之一,以确保 Wishlist 服务可以从目录服务获取产品描述。

Data Access
图 10-1. Wishlist 服务需要项目描述,但无法访问包含数据的产品

服务间通信模式

服务间通信(Interservice Communication)模式是迄今为止在分布式系统中访问数据最 常见的模式。如果一个服务(或系统)需要读取它无法直接访问的数据,它只需通过某种远程访问协议 ...

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