架构设计进阶
质量属性与架构权衡
性能、可用性、可修改性、安全性等质量属性的识别方法,以及它们之间为什么必然冲突。
质量属性是架构决策的输入
功能需求决定系统"做什么",质量属性决定系统"做得怎么样"。架构设计的核心工作,其实是在多个质量属性之间做取舍,而不是寻找一个万能方案。
- 性能:响应时间、吞吐量、资源利用率
- 可用性:故障检测、恢复时间、冗余程度
- 可修改性:改动一处需要触及多少模块
- 安全性:认证、授权、审计、数据保护
- 可测试性:能否在不拆解系统的前提下验证行为
典型的冲突关系
提高性能常见手段是引入缓存,但缓存会降低数据一致性,从而影响正确性与可修改性。提高可用性常见手段是增加冗余,但冗余会带来成本上升与数据同步复杂度。提高安全性常见手段是增加校验环节,但校验会引入额外延迟。
在案例与论文中,主动写出这种冲突比单纯罗列优点更能体现架构能力。表达模板是:"为了满足 A,我们采用了 X;X 会带来 B 方面的损失,因此我们通过 Y 做了缓解。"
质量属性场景的写法
一个完整的质量属性场景包含六个要素:刺激源、刺激、环境、制品、响应、响应度量。练习时把模糊需求(例如"系统要快")改写成可度量的场景(例如"在峰值负载下,95% 的查询请求响应时间不超过 300 毫秒"),这是案例题的高频考点。