架构师案例历年真题|第 8 期:2025 年 11 月

四季读书网 1 0
架构师案例历年真题|第 8 期:2025 年 11 月

案例分析第1题

某市计划建设一套电动车充电管理系统,为城市中的集中式充电站、路侧分布式充电桩以及用户手机APP提供统的接入与管理服务。系统需满足如下质量需求场景(a~n)

a)当用户通过手机APP或现场终端发起“开始充电”操作后,系统必须在3秒内给出响应结果(成功/失败及原因),否则视为超时。

b)在充电站方圆200米范围内,即使同时有超过300个设备在充电或等待充电口分配,系统CPU使用率仍需控制在40%以下,保证系统性能稳定。

c)当运营方提出集成新的第三方支付或计费API时,自提出需求之日起,须在10个工作日内完成设计、开发、联调和上线,不影响原有业务功能。

d)当系统发生软件故障或节点宕机时,从故障发生到恢复正常对外服务的时间不得超过5分钟。

e)系统需支持模拟雷电、暴雨、冰雹等恶劣天气场景下的充电过程,包括电压波动、网络抖动等,用于环境仿真测试。

f)系统需支持远程调用测试接口(如开放RESTful或gRPC的测试端点),便于第三方测试平台进行自动化回归测试。

g)对于用户敏感信息(如用户账号、密码、位置信息等),系统需采用AES-256加密算法进行存储与传输加密,防止数据泄露。

h)系统支持多语言界面、多种交互模式(触屏、键鼠等),并满足针对视力、听力或肢体障碍用户的无障碍使用标准(如放大字体、语音播报等),以提高易用性与可访问性。

i)系统整体采用模块化设计,要求运维人员在不依赖开发人员参与的前提下,能在2小时内通过手动配置快速替换故障模块(如更换计费模块、风控模块),保证业务连续性。

j)针对普通新用户,从首次接触系统到能独立完成一次充电操作的时间,不应超过60秒,体现系统的易学性和操作简单。

k)系统前端界面需在不同分辨率与不同类型终端设备(手机、平板、PC、大屏)上自适应显示,保证布局清晰、控件可用。

l)系统需支持计划内的滚动升级:在升级某个业务子系统时,已建立的充电会话不能中断,正在充电的用户不受影响,仅新建会话可能短暂切换到备用节点。

m)系统需支持通过配置文件方式新增或调整充电策略(如分时电价、阶梯计费策略),无需重新编译和发布应用程序。

n)当用户手机暂时没有网络时,APP自动进入安全模式,从本地安全缓存中展示用户最近一次充电记录和账户关键信息,保证基本信息可见,待网络恢复后自动同步最新数据。

【问题1】(7分)请将上述场景(a~n)与填入下表对应位置
架构师案例历年真题|第 8 期:2025 年 11 月 第1张

【问题2】(12分)质量属性场景一般包含哪 6 个组成部分?并指出场景中“集成新 API”以及“故障恢复时间不超过 5 分钟”分别对应哪两个组成部分。

【问题3】(6分)用户个人信息、位置信息可能长度较长,而 AES-256 为定长128bit(16 字节)块加密算法。对于超长数据,系统应如何处理才能正确进行加密?请从处理流程上进行说明。

问题1解答

(1)可用性 d l n
(2)安全性 g
(3)性能 a b
(4)可修改性 c i m
(5)可测试性 e f
(6)易用性 h j k

问题2解答

质量属性场景的六个组成部分为:刺激源 刺激 环境 制品 响应 响应度量
“可在 10 个工作日内集成新 API”属于刺激
“故障恢复时间不超过五分钟”——属于响应度量

问题3解答

对于长度超过 16 字节的用户敏感数据,应采用:

  1. 对原始数据进行分块处理,按 16 字节划分多个数据块;
  2. 对最后一个不足 16 字节的数据块进行填充(Padding)(如 PKCS#7);
  3. 结合合适的分组工作模式(如 CBC、CFB、GCM 等),逐块加密;
  4. 最终将多个密文块按顺序组合形成完整密文数据。

案例分析第2题

某连锁餐饮集团建设了“云–端一体的点菜系统”。
终端侧(端):部署在门店的收银机、服务员手持PAD、自助点餐机等,负责:1)桌台管理与点菜下单;2)本地订单暂存与支付;3)与云端同步菜品、价格等基础数据。
云端系统(云):部署在集团数据中心或公有云,负责:1)菜品基础信息管理(菜品、原料、定价、上下架等);2)订单管理(汇总各门店订单、对账、结算);3)餐厅菜品与菜单配置(不同门店的可售菜品组合);4)员工与权限管理;5)报表分析与运营决策。
企业计划采用领域驱动设计(DDD)方法,对复杂的业务域进行建模和拆分,同时需要考虑云端与终端之间的网络质量不稳定(弱网、间歇断网)的情况,保证点单业务“尽量可用 + 数据最终一致”。
【问题1】(5分)(1)简要说明领域驱动设计(DDD)的基本思想。(2)给出“限界上下文”的严格定义,并说明其在复杂系统(如本点菜系统)中的作用和好处。
【问题2】(14分)请将下列要素归入合适的架构层:a. 基础能力层、b. 日志采集、c. 桌台、d. 包裹、e.Ktor、f.Realm、g.Ajax、h.Spring Security、i. 网络层、j.SQLite、k. 业务层、l. 服务层、m. 原料、n. 表示层、o. 设备层、p. 统一代理能力、q. 持久层、r. 领域上下文
架构师案例历年真题|第 8 期:2025 年 11 月 第2张
【问题3】(6分)在网络质量较差甚至间歇性断网的情况下,点单业务可能遇到哪些典型问题(至少列出 3 种),请结合本案例给出对应的解决思路。

问题1解答

(1)DDD 强调以业务领域为中心,通过领域专家与开发人员共同建立统一语言,根据业务边界划分领域、构建领域模型,用模型驱动设计实现。
(2)限界上下文:在特定边界内,一个领域模型及其术语、规则保持语义一致的区域,边界外可以有不同含义。好处:消除概念冲突,限制复杂度,支持团队拆分与独立演进。

问题2解答(1)n (2)e(3)g(4)p(5)h(6)k(7)a(8)b(9)c(10)q(11)j、f(均可)

架构师案例历年真题|第 8 期:2025 年 11 月 第3张

问题3解答

下单时网络中断导致订单未能上传云端,出现云端与门店数据不一致
重试机制处理不当,可能出现订单重复提交
不同终端对同一桌台或订单并发操作,弱网情况下产生冲突或覆盖
菜品配置在终端缓存过期或未及时同步,导致价格/可售状态不一致。

对应措施示例:
在终端/边端使用本地事务 + 本地缓存保存订单,网络恢复后再异步同步到云端,采用最终一致性策略。
所有订单采用全局唯一 ID + 幂等接口,云端对重复提交进行去重。
建立对账机制(日结、账单对比)。

案例分析第3题

某互联网电商平台采用 MySQL + Redis的缓存架构。核心接口为“查询商品详情”,日常峰值 QPS 达到几万。系统目前使用 Cache-Aside 模式:先查 Redis 缓存,命中则直接返回;未命中时访问数据库,并把结果写回 Redis,设置过期时间(TTL)。

近期运维发现:某些热点商品在缓存失效瞬间,会出现大量请求同时击穿缓存、直接访问数据库,导致数据库连接数飙升、接口响应超时,影响系统整体 可用性。架构组组织评审,提出了两种优化思路:
方案一(王工):基于互斥锁的物理过期方案。仍然依赖 Redis TTL,缓存正常按过期时间删除。当缓存未命中时,只有拿到互斥锁的线程才允许去数据库重建缓存,其它线程等待或重试。
方案二(李工):逻辑过期方案(不依赖互斥锁做强同步,可返回过期数据):Redis 中存储“业务数据 + 逻辑过期时间字段”,可以不设置或设置很长 TTL。访问时若发现逻辑过期,可以先返回旧数据,同时由获取到非互斥锁的线程或后台异步线程去数据库重建缓存。

【问题1】(10分)请根据王工“基于互斥锁的缓存查询过程”(物理过期方案)的主要处理步骤,把下方的序列图补充完整。
架构师案例历年真题|第 8 期:2025 年 11 月 第4张
【问题2】(10分)请给出李工“逻辑过期方案(可返回过期数据)”的缓存查询过程的主要处理步骤,把下方的序列图补充完整。
架构师案例历年真题|第 8 期:2025 年 11 月 第5张
【问题3】(5分)从实现复杂度、数据一致性、性能影响、内存占用、适用场景等维度分析两种方法的优劣,
问题1解答(1)获取互斥锁成功(2)查询数据库重建缓存数据(3)写入缓存(4)释放锁(5)获取锁失败
架构师案例历年真题|第 8 期:2025 年 11 月 第6张
问题2解答(1)获取互斥锁成功(2)返回过期消息(3)查询数据库重置缓存(4)写入缓存重置逻辑过期时间(5)获取互斥锁失败
架构师案例历年真题|第 8 期:2025 年 11 月 第7张
问题3解答

逻辑过期方案的实现复杂度较高,需额外维护过期时间字段并通过异步更新机制保障数据有效性,其数据一致性表现为最终一致,允许系统在短时间内返回旧数据,但因更新操作在后台异步执行,对核心业务主流程的性能影响较小;而物理过期(互斥锁)方案的实现难度更低,主要依托 Redis 的 TTL 机制与锁控制实现数据过期管理,能实现强一致性保障,确保数据更新后才对外可见,不过在缓存击穿场景下,可能出现大量请求阻塞或重试的情况,对并发处理效率产生影响。

在内存占用方面,逻辑过期方案需额外存储过期时间等辅助字段,会增加一定的内存开销,适用于高并发读场景,且对数据一致性要求相对宽松的业务场景;物理过期(互斥锁)方案仅需存储核心业务数据,内存利用效率更高,更适合对数据一致性要求严格、整体并发压力适中的应用场景。

在题目明确“要求高可用”的前提下,建议优先选择逻辑过期方案:因为逻辑过期即使在数据已过期、正在重建期间,仍能用旧数据响应请求,避免大面积阻塞和超时,能更好支撑高并发和高可用;而互斥锁方案在缓存重建阶段会阻塞许多线程,请求体验较差,容易在热点 key 上形成“雪崩”式排队。

抱歉,评论功能暂时关闭!