技术架构与质量属性方向

2026年上半年软考高级系统架构设计师案例分析回忆版

2026 年上半年软考高级系统架构设计师案例分析回忆版整理页,已收录入侵检测、居家养老、智能安防、智能辅导、并发控制与缓存优化共 5 个案例的题干、问题与参考答案。

整理说明:以下内容来自考生回忆资料交叉整理,为同考点重构版,不等同于官方原题逐字复刻。答案与解析用于复盘学习,最终以官方信息为准。
案例 1

入侵检测与告警系统

考点:架构风格选型、质量属性场景六要素、管道—过滤器构件设计。

【说明】

某公司开发一套面向企业网络的入侵检测与告警系统,系统对网络流量与主机行为进行实时采集与分析,并在发现异常时生成告警。系统主要业务流程为:

数据收集 → 数据预处理 → 特征提取 → 规则匹配 / 模型推理 → 告警产生 → 告警输出

系统需求列表如下(备选质量属性集合:可用性 / 安全性 / 性能 / 可修改性):

  1. 权限分配给用户和管理员,不同角色拥有不同的功能与数据访问范围。
  2. 系统应能在每秒处理不少于 10000 条网络日志数据,单条处理延迟不超过 100ms。
  3. 系统 7×24 小时运行,年可用性不低于 99.99%,单点故障自动切换。
  4. 系统正常运行期间,未授权用户越界访问或试图修改规则时,系统应立即拒绝请求,并在 1 秒内告警并记录到安全审计日志中。
  5. 系统应支持新增检测规则在 30 分钟内上线生效,无需停机。
  6. 当某个过滤器节点发生故障时,系统应在 30 秒内完成故障转移,保证业务连续。
  7. 在告警高峰期(每秒告警数 ≥ 1000)下,告警输出端到端延迟不超过 3 秒。
  8. 系统应支持新增告警通道(如新增钉钉、企业微信)只需配置即可,无需修改代码。

问题 1(10 分)

  1. 将题干给出的 8 个质量属性场景(a~h)对应到具体质量属性(可用性 / 安全性 / 性能 / 可修改性),在题号后填写对应字母。
  2. 针对需求 d,按质量属性场景六要素(刺激源、刺激、环境、制品、响应、响应度量)进行场景描述。
展开查看参考答案

1. 字母与质量属性对应:

需求质量属性需求质量属性
a安全性e可修改性
b性能f可用性
c可用性g性能
d安全性h可修改性

2. 需求 d 的质量属性场景六要素:

  • 刺激源(Source):未授权用户(外部非授权访问者或试图越权的内部用户)。
  • 刺激(Stimulus):发起越界访问或试图修改规则。
  • 环境(Environment):系统正常运行期间。
  • 制品(Artifact):系统的访问控制 / 规则管理 / 审计模块。
  • 响应(Response):立即拒绝请求,并将事件记录到安全审计日志。
  • 响应度量(Response Measure):拒绝行为为“立即”完成,审计日志在 1 秒内生成。

问题 2(7 分)

批处理风格与管道—过滤器风格两种架构风格,哪一种更适合应用于入侵检测和告警类的系统?请选择其中一种,并说明理由。

展开查看参考答案

选择:管道—过滤器风格(Pipe-and-Filter)。

  1. 实时性匹配:入侵检测的输入是连续的网络流量与主机日志,要求流式、低延迟处理;管道—过滤器以“数据来一段处理一段”的方式工作,契合流式场景。批处理需先攒齐一批再处理,无法满足“立即拒绝 + 1 秒内审计”的实时性要求。
  2. 流程阶段独立:系统流程“采集 → 预处理 → 特征提取 → 规则 / 模型推理 → 告警产生 → 告警输出”天然是多阶段流水线,每阶段职责单一,与管道—过滤器模型一致。
  3. 可扩展性强:新增检测算法或特征提取器只需新增 / 替换某一过滤器,对其他阶段无影响;批处理风格阶段耦合较紧,扩展成本高。
  4. 可并发可分布:每个过滤器可独立部署、独立扩容,支持横向扩展应对流量峰值;单个过滤器故障不会拖垮全链路,便于降级与重试。

问题 3(8 分)

根据你在子题 2 中选择的架构风格,补充完整该系统架构中包含哪些构件,并说明各构件的职责与数据流。

展开查看参考答案

基于管道—过滤器风格,系统主要构件如下:

#构件类型职责
1数据采集器Source Filter采集网络流量、主机日志、终端 agent 数据
2数据预处理过滤器Filter清洗、归一、去重、时间对齐
3特征提取过滤器Filter抽取统计特征、行为序列、协议字段
4规则匹配 / 模型推理过滤器Filter基于规则库或 ML 模型判断异常
5告警产生过滤器Filter生成告警事件,附带等级与上下文
6告警输出过滤器Sink Filter通过邮件 / 短信 / SOC / Webhook 等通道输出
7管道(Pipe)连接器基于消息队列(如 Kafka)解耦相邻过滤器
8审计与日志构件横切构件记录处理链路与拒绝行为,满足“1 秒内审计”
9配置与规则管理构件控制构件管理检测规则、模型版本、过滤器配置下发

数据流:原始数据 → [采集] → [预处理] → [特征提取] → [规则 / 模型推理] → [告警产生] → [告警输出],全链路通过消息队列管道解耦。

案例 2

居家养老智能管理系统

考点:四层架构技术选型、时序数据与时序数据库、MQTT QoS 分级。

【说明】

某公司开发一套居家养老智能管理系统,对独居 / 高龄老人进行日常照护,主要功能包括:

  • 对家居环境(温度、湿度、光照)的测量与监控;
  • 对老人跌倒(倒地)进行实时检测;
  • 上传水表、电表数据,并对未关闭电器进行告警;
  • 一键呼叫功能,可直接呼叫医护人员到场;
  • 对卫生间和浴室进行检测(如长时间停留、跌倒);
  • 通过机器人完成送药、送饭、急救协助等任务。

系统采用四层分层体系架构,结构如下(带 (1)~(7) 待填空号):

┌─────────────────────────────────────────────────────────┐
│ L1 表示层      Web 端 [ (1) ]                            │
└────────────────────── (3) ───────────────────────────────┘
                          │
┌─────────────────────────────────────────────────────────┐
│ L2 应用服务层   [ (2) ] / Spring Boot / Spring Cloud      │
│                                            └─→ DB [ (4) ]│
└────────────────────── HTTP ──────────────────────────────┘
                          │
┌─────────────────────────────────────────────────────────┐
│ L3 数据计算层   Kafka → Flink 流计算引擎                  │
│                                            └─→ DB [ (5) ]│
└────────────────────── MQTT ──────────────────────────────┘
                          │
┌─────────────────────────────────────────────────────────┐
│ L4 边缘网关层   嵌入式设备 [ (6) ]    机器人 [ (7) ]       │
└─────────────────────────────────────────────────────────┘

题目给定的技术选项集合:Vue.js、Socket、Kafka、Flink、TDengine、NoSQL、MySQL、ROS、freeRTOS、HTTP、MQTT、WebSocket。

问题 1(7 分)

请根据题目给出的四层体系架构图和技术选项集合,将图中标号 (1)~(7) 处填入合适的技术名称。

展开查看参考答案
空号位置技术选用理由
(1)L1 表示层 — Web 端Vue.js主流前端框架,承接 Web 端 UI
(2)L2 应用服务层NoSQL缓存设备状态与会话信息,支撑高并发查询
(3)L1 ↔ L2 通信WebSocket双向实时通信,承载告警推送与一键呼叫
(4)L2 业务数据库MySQL关系型业务数据:用户、设备档案、告警记录
(5)L3 时序数据库TDengine海量传感器时序数据存储与高效查询
(6)L4 嵌入式设备 OSfreeRTOS资源受限嵌入式设备的实时操作系统
(7)L4 机器人 OSROS服务机器人的标准操作系统

问题 2(10 分)

  1. 什么是时序数据?为什么 L3 数据计算层要使用时序数据库(TDengine)而不是关系数据库?
  2. 请分别说明本系统四层架构每一层的主要功能,并结合题目所给的图中模块说明各层在系统中所承担的职责。
展开查看参考答案

1. 时序数据与时序数据库:

时序数据(Time-Series Data):以时间戳为主键、按时间顺序产生的数据。特点是写多读少、单调追加写、按时间窗口聚合查询、数据量巨大。本系统中环境传感器(温湿度、光照)、水电表、人体感应器、跌倒检测等持续产生高频时序点。

为什么使用时序数据库:

  • 高吞吐写入:百万级设备的高频上报远超传统关系库的写入能力,TDengine 针对“按时间分区 + 列式存储 + 高压缩比”做了优化;
  • 存储成本低:列式存储 + 时序压缩算法可达 10×~100× 压缩比,大幅降低长周期保存成本;
  • 聚合查询高效:内建降采样、滑动窗口、插值等时序专用算子,秒级返回历史曲线;
  • 生命周期管理:内建数据保留策略(自动过期、冷热分层),运维成本低;
  • 关系型不适合:MySQL 等行式存储在百万级 IoT 写入下索引膨胀、查询慢,且不支持时序专用算子。

2. 四层架构主要功能:

名称主要功能与职责
L1表示层面向家属、护理人员、运营人员的 Web / App 展示与交互;Vue.js 构建前端,通过 WebSocket 接收告警推送
L2应用服务层承载业务逻辑(用户管理、告警规则、家庭与亲属关系);NoSQL 缓存设备状态,MySQL 持久化业务数据;对外提供 RESTful API
L3数据计算层Kafka 承接边缘上送数据,Flink 做流式计算(跌倒识别、电器异常检测、阈值告警);TDengine 存储海量时序数据
L4边缘网关层就近接入各类传感器与机器人;本地协议转换;本地告警与机器人调度;freeRTOS 嵌入式设备负责感知,ROS 机器人负责送药、急救协助

问题 3(8 分)

本系统 L4 边缘网关层与 L3 数据计算层之间采用 MQTT 协议传输数据。MQTT 协议定义了 QoS 0 / QoS 1 / QoS 2 三种服务质量等级,请分别说明三者的语义与适用场景,并结合本居家养老系统说明为什么要选择 QoS 2。

展开查看参考答案
QoS 等级语义投递保证报文交互适用场景
QoS 0At most once,最多一次不保证送达,可能丢失,不重复1 次:PUBLISH容忍丢失,如周期性环境采样(温湿度上报)
QoS 1At least once,至少一次保证送达,但可能重复2 次:PUBLISH → PUBACK必须送达且接收端可幂等处理,如水电表读数上报
QoS 2Exactly once,恰好一次保证送达且不重复4 次:PUBLISH → PUBREC → PUBREL → PUBCOMP关键控制指令、告警、急救呼叫等不允许丢失也不允许重复

本系统选择 QoS 2 的理由:

  1. 系统涉及老人跌倒告警、一键急救呼叫、机器人送药指令等关键消息——丢失会延误救治、危及生命;
  2. 同时这些消息不允许重复——重复呼叫医护、重复送药、重复急救指令都会造成混乱或医疗事故;
  3. QoS 0 不保证送达、QoS 1 可能重复,均无法同时满足“不丢 + 不重”,必须使用 QoS 2;
  4. 代价是 QoS 2 的四步握手会带来更高时延与 Broker 负载——非关键消息(如环境采样)可降级为 QoS 0/1,关键消息走 QoS 2,分级配置兼顾性能与可靠性。
案例 3

智能安防管理系统

考点:AIoT 四层分层架构的职责划分、构件归类、分层架构在边缘协同场景的不足。

【说明】

某 AIoT 智能安防管理系统采用“感知层 — 边缘层 — AI 决策层 — 应用层”四层分层架构,结合边缘计算与云端协同实现智能决策。系统涉及的 11 个核心构件如下(顺序打乱):

智能门禁控制器、生物识别终端、周界保护传感器、边缘网关、计算中心、AI 模型、视觉分析引擎、规则分析引擎、APP 应用、显示大屏、第三方系统集成。

数据流向:

感知层(多种传感器)— 原始数据 / 控制信号 → 边缘层 — 结构化数据 / 指令 → AI 决策层(含视觉分析引擎、规则分析引擎)— API / 消息 → 应用层(含显示大屏)。

问题 1(8 分)

分别阐述感知层、边缘层、AI 决策层、应用层四层在该智能安防系统中的主要作用与活动。

展开查看参考答案
  • 感知层:通过智能门禁控制器、生物识别终端、周界传感器、摄像头等终端设备采集物理世界的原始数据与控制信号,并接收上层指令完成本地动作(开门、报警、播放语音)。
  • 边缘层:在靠近数据源的位置部署边缘网关与本地计算节点,完成数据清洗、协议转换、结构化、轻量推理、本地缓存,将原始数据转换为结构化数据上送 AI 决策层;同时承担断网兜底与低延迟响应职责,降低云端压力。
  • AI 决策层:以计算中心 + AI 模型 + 视觉分析引擎 + 规则分析引擎为核心,对边缘上送的结构化数据进行深度推理、行为分析、异常检测、综合决策,通过 API / 消息把决策结果下发给应用层或边缘层。
  • 应用层:承载 APP 应用、显示大屏、第三方系统集成,将 AI 决策结果可视化、业务化,并完成与公安、消防、物业等跨系统的数据交换。

问题 2(11 分)

将题目给出的 11 个构件按照“感知层 / 边缘层 / AI 决策层 / 应用层”四层架构分别归类填入对应层中。

展开查看参考答案
归属构件数量
感知层智能门禁控制器、生物识别终端、周界保护传感器3 个
边缘层边缘网关1 个
AI 决策层计算中心、AI 模型、视觉分析引擎、规则分析引擎4 个
应用层APP 应用、显示大屏、第三方系统集成3 个

合计 11 个构件。

问题 3(6 分)

该四层分层架构在 AIoT / 物联网边缘计算与云端协同场景下存在哪些缺点或不足?请至少写出 5 点,并结合具体场景加以分析。

展开查看参考答案
  1. 跨层调用受限、灵活性差:分层架构强调严格逐层调用,应用层无法直接访问感知层数据;对极致实时性(毫秒级控制)的场景,逐层穿透带来不可接受的延迟。
  2. 端到端时延累加:感知 → 边缘 → AI → 应用四跳,每跳带来网络 / 序列化 / 排队开销,长尾时延难控;AI 决策层若部署在云端,时延更不可控。
  3. 边缘层与 AI 决策层职责边界模糊:轻量推理放边缘还是放云端难以一刀切,容易出现“边缘做太少 → 云压力大”或“边缘做太多 → 资源吃紧”的两难。
  4. 网络依赖与可用性问题:云端协同强依赖网络,断网时若边缘兜底不足,应用层整体降级;跨层数据同步在弱网下一致性难以保证。
  5. 横切关注点难以处理:安全、监控、运维、配置下发等横切能力需要在四层中重复实现,维护成本高,易出现配置漂移。
  6. 边缘节点资源受限:边缘网关算力、存储、能耗有限,复杂 AI 模型部署受限,模型更新与热部署工程链路复杂。
  7. 数据一致性与状态同步复杂:设备影子、缓存、规则版本在感知 / 边缘 / 云之间需协同,一致性难保障。
  8. 演进与扩展性受限:新增一种业务往往需要四层联动改造,发布上线成本高。
案例 4

智能辅导学习系统(智能辅导与答疑)

考点:学习状态流转图填空、推荐系统三类冷启动、路径推荐对前置依赖的敏感性。

【说明】

某在线教育平台开发一套智能辅导学习系统,提供智能辅导与答疑能力。系统主要模块包括 数据收集、模型构件、智能辅助、学习路径推荐

系统的学习状态流转图如下,含 6 个待填空位 (1)~(6):

                  ┌────────┐
                  │  开始  │
                  └────┬───┘
                       │
              ┌────────┴────────┐
             (1)               (2)
              ↓                 ↓
          ┌────────────────────────┐
          │      学习进行中         │
          └─────┬──────────────┬───┘
               (4)            (3)
                │              ↓
                │         ┌─────────────────────┐
                │         │     智能辅导中       │
                │         └────┬───────────┬────┘
                │             (6)         (5)
                │              ↓           ↓
                └──────────────┴───────────┘

候选选项集合:数据收集、模型构件、学习路径推荐、智能辅助、答疑请求、推荐路径调整。

系统投入使用后,发现:

  • 对新用户的推荐正确率不高,原因为用户冷启动;
  • 对中等偏上水平的学员推荐准确性较高,对基础知识薄弱的学员推荐准确性较差,反映出系统过于偏向高级知识的分析。

问题 1(6 分)

请根据题目给出的学习状态流转图与选项集合,将图中标号 (1)~(6) 处填入合适的动作 / 模块名称。

展开查看参考答案
空号位置填入说明
(1)开始 → 学习进行中 的左分支数据收集采集学员初始信息(注册资料、入门测评结果)
(2)开始 → 学习进行中 的右分支学习路径推荐基于初始画像生成首版学习路径
(3)学习进行中 → 智能辅导中 的触发动作答疑请求学员遇到卡点主动求助,或系统识别学员困难
(4)学习进行中 内部的循环动作模型构件持续更新学员画像与知识点掌握度模型
(5)智能辅导中 → 学习进行中 的回流动作智能辅助答疑结束,回到正常学习流程
(6)智能辅导中 内部的循环动作推荐路径调整根据辅导反馈动态调整后续学习路径

问题 2(8 分)

系统投入使用后发现,对新用户的推荐正确率不高,原因主要是用户冷启动问题。请说明:

  1. 什么是用户冷启动?为什么会导致推荐正确率下降?
  2. 除“用户冷启动”外,推荐系统中还有另外两种冷启动,请分别说明其含义。
展开查看参考答案

1. 用户冷启动(User Cold Start):

指新注册用户或长期不活跃用户在系统中缺乏历史行为数据(无浏览、无点击、无评分、无测评结果)的情形。导致:

  • 无法构建该用户的兴趣 / 能力画像;
  • 协同过滤算法找不到相似邻居;
  • 基于行为的特征大量缺失;
  • 只能给出热门推荐 / 默认推荐等粗粒度结果,正确率自然偏低。

应对:基于注册资料、年级、目标技能、入门测评做画像冷启动;混合内容推荐;引导式入门测评快速积累显式反馈。

2. 另外两种冷启动:

  • 物品冷启动(Item Cold Start):新加入的物品 / 课程没有被任何用户交互过,系统缺乏关于该物品的协同信号,难以将其推荐给合适的用户。应对:基于内容特征建模(标签、知识点、难度等)、引入运营冷启动流量。
  • 系统冷启动(System Cold Start):整个推荐系统刚上线或新业务线启动时,用户与物品的交互数据都很稀少,模型无法训练或效果极差。应对:先用规则 / 热门 / 编辑推荐过渡,逐步积累数据后切换到模型推荐。

问题 3(11 分)

系统使用一段时间后发现:中等及以上水平的学员推荐路径效果较好,但基础知识较弱的学员反映推荐学习路径过难,系统过于偏向高级知识的分析。请从路径推理和数据两方面论述,学习路径推荐对学员基础知识前置依赖的敏感性问题及其原因,并给出改进建议。

展开查看参考答案

1. 路径推理(算法侧)原因:

  1. 缺乏前置依赖建模:算法主要基于相似度 / 相关性(协同过滤、内容相似),未显式建模知识点之间的前置依赖图(Prerequisite Graph),推荐时只看“相关”不看“先后”。
  2. 目标导向偏差:算法以“目标技能 / 高考点”为锚,倾向推荐与目标接近的高级内容,忽视了从学员当前水平到目标之间需要补齐的基础链路。
  3. 未引入能力评估闭环:未结合学员当前知识点掌握度(IRT / 知识追踪 BKT / DKT),无法判断学员能否承接下一个知识点。
  4. 多样性优化与难度递进缺失:只优化点击率 / 完成率,未把“难度梯度合理”作为目标函数的一部分。

改进:引入知识图谱与前置依赖关系,结合知识追踪模型构建“能力—难度”匹配,在排序阶段加入难度递进约束。

2. 数据侧原因:

  1. 样本分布偏倚:训练数据中中高级学员的行为样本远多于基础薄弱学员(基础薄弱学员留存率本身低),模型学到的特征偏向中高级学员。
  2. 能力标签缺失或粗糙:缺乏对学员当前知识点掌握度的细粒度评估数据,无法区分“基础薄弱”与“中等水平”。
  3. 隐式反馈噪声:基础薄弱学员的点击 / 浏览未必代表“听懂了”,反馈信号噪声大,模型容易把“高难度内容被点击”误认为“该用户能接受高难度内容”。
  4. 课程难度标签不规范:难度标签由运营人工打,标准不统一,导致模型对“难度”理解失真。

改进:增加入门测评显式数据、标准化课程难度标签、引入显式的能力—难度匹配特征、对训练样本做重采样或加权以纠正偏倚。

案例 5

高并发数据访问场景下的并发控制与缓存优化

考点:悲观锁分类与场景、乐观锁实现、Redis 穿透 / 击穿 / 雪崩。

【说明】

某电商业务系统在大促秒杀场景下面临严重的并发竞争与性能瓶颈:

  • 数据库层:库存扣减、订单创建存在写写冲突,部分热门商品出现超卖;
  • 缓存层:商品详情缓存出现穿透、击穿与雪崩三类问题,导致 DB 压力骤增。

为此需要结合悲观锁、乐观锁等并发控制机制以及 Redis 缓存优化手段进行设计与改造。

问题 1(8 分)

悲观锁按行为方式可以分为哪几种(至少两类)?请分别说明每种悲观锁的工作机制、典型应用场景,并给出对应的设计方案。

展开查看参考答案

悲观锁按行为方式(读 / 写)可分为两类:

1. 共享锁(Shared Lock,S 锁 / 读锁)

  • 机制:事务持有 S 锁后,其他事务可继续加 S 锁读,但不能加 X 锁写;允许多读、禁止读写并发与写写并发。
  • 典型场景:报表查询、对账等需要一致性读但允许并发读的场景。
  • 设计方案:
    • 数据库:SELECT ... LOCK IN SHARE MODE(MySQL InnoDB);
    • 业务层:快照读 + 共享锁组合,保证读取一致性。

2. 排他锁(Exclusive Lock,X 锁 / 写锁)

  • 机制:事务持有 X 锁后,其他事务既不能加 S 锁也不能加 X 锁,完全独占;保证写写、读写串行化。
  • 典型场景:账户扣款、库存扣减、订单状态变更等强一致写场景。
  • 设计方案:
    • 数据库:SELECT ... FOR UPDATE(MySQL InnoDB)配合事务边界;
    • 分布式:Redis SET NX EX / Redisson 红锁、Zookeeper 临时顺序节点、etcd lease;
    • 设计要点:行锁优于表锁、按业务主键加锁;固定多资源加锁顺序避免死锁;分布式锁必须设置 TTL 与自动续约,防止持锁者宕机;可重入支持同一线程对同一资源多次加锁。

问题 2(9 分)

  1. 请从应用层和 DBMS 层两个角度,分别介绍乐观锁的实现方案。
  2. 对比乐观锁与悲观锁的优缺点与适用场景,并结合本题电商秒杀业务说明应如何选型。
展开查看参考答案

1. 乐观锁的实现方案:

(a) 应用层实现:

  • 版本号机制(Version):实体表加 version INT 字段;更新时 UPDATE t SET col=?, version=version+1 WHERE id=? AND version=?,影响行数为 0 即冲突;
  • 时间戳机制(Timestamp):updated_at 作为版本,逻辑同上;
  • 业务字段 CAS:将原值带入 WHERE 条件,如库存扣减 UPDATE stock SET num=num-1 WHERE id=? AND num=?
  • 冲突重试 + 退避:应用层捕获冲突 → 指数退避 + 限重试次数;
  • ABA 防护:版本号单调递增天然防 ABA。

(b) DBMS 层实现:

  • MVCC(多版本并发控制):InnoDB 通过隐藏列 DB_TRX_ID / DB_ROLL_PTR 与 undo log 实现快照读,读不加锁,写时通过当前读判断版本;
  • 可重复读 / 串行化隔离级别:在事务提交时 DBMS 检测写冲突;
  • CAS 原语:PostgreSQL xmin、SQL Server rowversion 等提供原生版本字段;
  • ORM 框架集成:JPA @Version、Hibernate Optimistic Locking、MyBatis-Plus @Version 自动注入 version 条件。

2. 悲观锁 vs 乐观锁对比:

维度悲观锁乐观锁
核心假设假设冲突一定发生,先加锁再操作假设冲突很少发生,先操作再校验
实现方式FOR UPDATE / 数据库行锁 / 分布式锁版本号 / 时间戳 / CAS / MVCC
优点强一致、实现简单、并发冲突可控无阻塞、吞吐量高、无死锁
缺点加锁开销大、吞吐量低、可能死锁、持锁宕机影响大冲突多时重试代价高、需业务层处理重试与降级、ABA 问题
适用场景写多 / 冲突高 / 强一致(扣款、库存扣减)读多写少 / 冲突低(点赞、评论、配置更新)

本题秒杀场景选型:

  • 库存扣减:写竞争极高、强一致要求高 → 悲观锁(数据库行锁 + 事务 + Redis 分布式锁防超卖);
  • 商品详情读取:读多写少 → 乐观锁 / 缓存 + 版本号;
  • 订单创建:使用乐观锁 + 唯一索引防重复下单;
  • 兜底:乐观锁冲突重试限定次数与退避,超阈值降级到悲观锁或返回“商品繁忙”业务错误。

问题 3(8 分)

针对高并发场景下 Redis 缓存的穿透、击穿、雪崩三类问题,请分别说明问题原理、Redis 中的实现优化方案与适用场景。

展开查看参考答案

1. 缓存穿透(Cache Penetration)的优化

  • 问题:查询不存在的数据,每次请求都打穿到 DB,恶意请求可拖垮 DB。
  • 手段与实现:
    • 布隆过滤器(Bloom Filter):缓存前置一层 Bloom,过滤一定不存在的 key(Redis 可用 RedisBloom 模块实现);
    • 缓存空值:对查询为空的 key 也缓存一个短 TTL 的空对象(SET key NULL EX 60)。
  • 场景:大量“查询不存在 key”的业务(非法 ID 爬虫攻击、按用户输入查询)。

2. 缓存击穿(Cache Breakdown)的优化

  • 问题:热点 key 过期瞬间,大量并发请求同时落到 DB。
  • 手段与实现:
    • 互斥锁(Mutex / SET NX):未命中时只允许一个请求查 DB 并回填,其余等待(SET key val NX EX 10);
    • 逻辑过期 / 永不过期 + 异步刷新:value 中带逻辑过期字段,物理 TTL 设为 -1,后台线程异步刷新;
    • 热点 key 预热:上线 / 活动前主动预加载到缓存。
  • 场景:单一热点 key 高并发访问(秒杀商品详情、首页配置)。

3. 缓存雪崩(Cache Avalanche)的优化

  • 问题:大量 key 在同一时刻集中过期,或 Redis 整体故障,请求全部打到 DB。
  • 手段与实现:
    • 过期时间随机化:EXPIRE key (base ± random),把过期时间打散;
    • 多级缓存:Caffeine 本地缓存 + Redis + DB;
    • 熔断降级与限流:Redis 故障时熔断降级到本地缓存 / 默认值,对 DB 加限流(Sentinel / Hystrix);
    • Redis 高可用:主从 + 哨兵 / Cluster,避免单点故障。
  • 场景:大规模缓存批量预热、定时全量刷新、Redis 主节点故障。

整理口径:以上 5 个案例为考生回忆资料的同考点重构版,答案与解析为编辑团队按教程与行业实践整理,仅供复盘学习,最终以官方信息为准。

后续更新:若获得新的案例分析回忆版素材,将同步补充至本页。