系统架构设计师 · 高频练习

事件驱动架构为什么能降低系统耦合?

高级 单选题 第 230 题 中等 系统架构设计师事件驱动架构消息队列系统解耦
题目

订单系统完成支付后,只发布“订单已支付”事件,库存、积分、通知等服务各自订阅该事件并独立处理。订单系统不需要同步调用每个下游服务,也不关心它们的内部实现。该设计主要体现了()。

A 事件驱动架构降低系统耦合
B 所有服务必须共用一个数据库表
C 客户端直接修改数据库
D 取消消息可靠性要求
题目类型:原创高频考点题 用途:用于帮助理解系统架构设计师相关考点和答案解析,不等同于官方真题。
书木兰刷题练习 适合懒人、小白的刷题通关平台
正确答案
A
答案解析

事件驱动架构通过发布事件和订阅事件来连接系统。发布方只表达“发生了什么”,订阅方根据自己的业务处理事件。这样能减少同步调用链和直接依赖,适合订单、通知、积分、库存等业务扩展场景。不过它也带来一致性、重复消费、消息顺序和失败补偿等设计问题。

选项分析

A

正确。发布订阅事件可以降低系统之间的直接调用依赖。

B

错误。共用数据库会增加耦合,也不符合微服务边界。

C

错误。客户端直接修改数据库会破坏安全和业务规则。

D

错误。事件驱动更需要考虑消息可靠性、幂等和补偿。

本题为什么容易错

很多同学看到消息队列就只想到削峰。削峰当然重要,但本题重点是订单系统不再直接依赖库存、积分、通知服务,这更明显是在考解耦。

先看结论

简短答案

事件驱动架构为什么能降低系统耦合,正确答案是 A(事件驱动架构降低系统耦合)。事件驱动架构通过发布事件和订阅事件来连接系统。发布方只表达“发生了什么”,订阅方根据自己的业务处理事件。这样能减少同步调用链和直接依赖,适合订单、通知、积分、库存等业务扩展场景。不过它也带来一致性、重复消费、消息顺序和失败补偿等设计问题。

解析

易混淆概念对比表

概念本题判断区别要点记忆提示
事件驱动架构降低系统耦合 本题正确答案 正确。发布订阅事件可以降低系统之间的直接调用依赖。 看到题干核心场景时优先联想到它
所有服务必须共用一个数据库表 本题干扰项 错误。共用数据库会增加耦合,也不符合微服务边界。 看到该词不要急着选,先判断是否真正解决题干问题
客户端直接修改数据库 本题干扰项 错误。客户端直接修改数据库会破坏安全和业务规则。 看到该词不要急着选,先判断是否真正解决题干问题
取消消息可靠性要求 本题干扰项 错误。事件驱动更需要考虑消息可靠性、幂等和补偿。 看到该词不要急着选,先判断是否真正解决题干问题
本题易混淆选项怎么区分
  • 所有服务必须共用一个数据库表:错误。共用数据库会增加耦合,也不符合微服务边界。
  • 客户端直接修改数据库:错误。客户端直接修改数据库会破坏安全和业务规则。
  • 取消消息可靠性要求:错误。事件驱动更需要考虑消息可靠性、幂等和补偿。
复习

知识点详解

系统解耦是系统架构设计师考试中需要结合场景理解的考点。围绕“事件驱动架构为什么能降低系统耦合”这类题目,复习时要先看题干描述的是概念定义、适用场景、作用效果,还是与其他选项的区别。本题的题干关键词是“订单系统完成支付后,只发布“订单已支付”事件,库存、积分、通知等服务各自订阅该事件并独立处理。订单系统不需要同步调用每个下游服务,也不关心它们的内部实现。该设计主要体现了()”,它指向的核心答案是 A(事件驱动架构降低系统耦合)。

备考速记

备考速记:题干如果强调“系统解耦”中的关键目标,就先联想到 系统解耦;如果选项里出现 所有服务必须共用一个数据库表、客户端直接修改数据库、取消消息可靠性要求,不要只看名称熟悉,要判断它们是否真正对应题干场景。

系统解耦在系统解耦场景中的作用

系统解耦在本题中的核心价值,是解决“订单系统完成支付后,只发布“订单已支付”事件,库存、积分、通知等服务各自订阅该事件并独立处理。订单系统不需要同步调用每个下游服务,也不关心它们的内部实现。该设计主要体现了()”这个场景问题。复习时不要只背选项名称,还要理解它为什么适用于该场景,以及它能解决哪类安全、流程或管理问题。

拓展

同类题怎么考

  • 给出系统解耦场景,判断应该选择哪个概念、工具、协议或管理过程。
  • 考查系统解耦的作用,要求从四个相近选项中找出最符合题干目标的一项。
  • 把系统解耦和所有服务必须共用一个数据库表、客户端直接修改数据库、取消消息可靠性要求放在一起考,重点看适用场景是否一致。
  • 题干通常会出现一个关键动作或目标,先定位关键词,再回到选项逐一排除。
系统解耦在系统架构设计师软考中的考法

软考选择题通常不会只考概念定义,还会把系统解耦放到系统解耦场景中,要求判断它的作用、适用范围或与相近概念的区别。遇到这类题时,先抓住题干中的业务场景,再看哪个选项最能解决该场景下的核心问题。

解题思路

题干里订单系统只发布事件,不逐个同步调用下游,这就是事件驱动的典型味道。老师讲架构题时会提醒:事件不是简单发个消息,而是把“调用谁”转成“发生了什么”。这一步,耦合就降下来了。

考点定位

事件驱动常考解耦、异步处理、削峰、最终一致性。题干出现发布事件、订阅事件、下游独立处理,要想到事件驱动。

易错提醒

  • 把事件驱动理解成简单异步发送消息,没有考虑业务事件语义。
  • 忽略消息重复投递,需要下游处理幂等。
  • 认为异步就不需要处理一致性和失败补偿。

备考提示

  • 系统架构题中,事件驱动可以和消息队列、最终一致性、Saga、幂等处理一起复习。
  • 看到“只发布事件,下游订阅处理”,优先想到解耦和异步扩展。

你可能还想了解

  • 事件驱动架构为什么能降低系统耦合?
  • 系统解耦是什么?
  • 系统解耦在系统架构设计师考试中怎么考?
  • 系统架构设计师系统解耦题怎么理解?
  • 事件驱动架构适合什么场景怎么考?
  • 事件驱动架构为什么解耦怎么考?

本文小结

本题核心考点是系统解耦在系统解耦场景中的判断和应用。遇到类似题目时,先看题干描述的目标,再判断哪个选项最符合场景;本题应选择 A(事件驱动架构降低系统耦合)。