架构问题的边界:先问成功语义,再选组件
"内容接收接口 200ms 返回"还是"完整审核 200ms 完成"?同一句话两种题设,方案完全不同——前者可异步,后者与外部模型平均 500ms 直接冲突。本页定义架构决策的边界描述方法、由不变量决定裁决点。候选比较的方法由从选项比较到风险说明负责;评审流程由ADR、RFC 与运行证据专题负责。
什么是架构决策
架构决策改变系统的结构、质量属性或开发运维责任。它应回应特定利益相关者的问题、约束和风险,而非追求抽象"最佳实践"。一个可讨论的边界描述外部用户、相邻系统、数据所有者、信任区域、故障域和运行负责人。系统上下文图展示外部关系;容器图表达部署和技术责任;组件图细化模块职责。不同图解决不同层次问题。C4 等图示记法帮助沟通,不证明事务、容量和高可用设计正确;图上每条箭头还需明确同步/异步、身份、数据、超时和失败结果。
由不变量决定最终裁决点
跨服务动作需找到唯一权威裁决点:数据库约束、共识状态机、业务拥有服务或人工审核。缓存、搜索索引、消息 Broker 和异步投影通常不是权威业务事实。设计路径时逐个标注状态提交、消息确认、客户端确认和外部副作用。如果一个动作有多处独立的"成功"标志,要定义它们之间如何恢复、对账和处理未知结果。
旧结果和重复请求是跨域系统的基本情形。请求应有业务身份、事件应有版本或源位点、工作应有 attempt/任期;写端按约束拒绝过期结果。
画出会改变答案的边界
教学系统接收内容、调用模型、落审核结论并发布搜索。题目若只要求接收接口200ms,可异步完成;若要求完整审核200ms,外部模型平均500ms就与目标冲突。第一步是区分请求响应、业务终态和用户可见,而非先选择MQ。列系统内外参与者、事实源、不可逆效果、可信身份和故障域。模型供应商可查询但不支持取消时,系统不能承诺超时后绝不产生费用;搜索只提供近实时视图时,权限撤销需要另有权威检查。边界明确可以指出需求矛盾,不必为满足所有句子编造组件保证。
同一方案在两种题设下的比较:方案A同步等待所有必需模型,调用链短但延迟/可用性受所有依赖;方案B持久任务异步聚合,接入快但要有任务查询、期限、重放和人工兜底。若用户可等30秒,B可能合适;若必须实时拒绝高风险请求,则需更快本地规则、保守策略或改变产品流程,不能仅加缓存掩盖真实未知结果。
成本与正确性边界也要声明:教学峰值1000内容/秒、每个3模型等于3000子任务/秒,模型配额若2000,不论使用何种队列都不能长期稳定。需求讨论应先处理这项矛盾。
验证产物
提交上下文图、成功语义、硬约束、可谈判目标及未知数据。对每个未知写出如何测、谁确认、值在什么范围会改方案。接着给一条完整用户旅程和故障旅程,指出保证跨越哪些边界、在哪里停止。评分看能否主动暴露不可满足要求、定义可信事实与恢复责任;只画系统内部框图,遗漏第三方费用和操作员流程,也会得到错误"全自动恢复"结论。
边界陈述清单与未知量化
本页前面强调"先问成功语义",评审时还需要一张结构化的边界陈述表,否则边界只存在于讲者脑中。四栏缺一不可:外部参与者(谁发起、谁受影响)、事实源(每个关键状态由哪个上下文裁决)、不可逆效果(扣款、发送、删除)、信任区域(内部网、供应商公网、用户设备)。
未知参数不能写成"待定",要写成区间加翻转阈值:例如"模型取消延迟"未知,给区间 (0, 30) 秒,业务决策在 30 秒处翻转(超过 30 秒的取消不改变用户等待体验)。约定区间端点触及阈值即视为跨阈值:若区间跨过或触及翻转点,判定为 NEEDS_MEASUREMENT,先测量再定方案;若区间完全落在阈值一侧,方案可以先行。这条规则让"未知"成为可执行项,而不是评审的免死金牌。
反例:边界表只写"系统对接模型供应商"——没写供应商是外部信任区、不可逆效果是计费、事实源是供应商的受理号。事故时团队会误以为"取消请求发出即停止计费",而实际供应商可能已受理。把三件事分开写,才能发现"我们需要的是查询能力,不是取消能力"。
执行 python3 labs/architecture_models.py boundary_statement:预期输出四栏内容、unknown 区间 (0,30)、flip_threshold_s=30、verdict=NEEDS_MEASUREMENT。脚本只检查边界表述结构,不测量真实供应商行为。
两个合理选择:A 边界表只在评审文档里写一次,轻但容易过期;B 边界表进仓库随代码评审更新,重但每次变更都能看到影响。本例选 B,并规定边界表变更必须和接口契约变更同一 PR。
架构师变化条件
模型供应商新增"取消"接口:UNKNOWN 窗口缩小但需重算取消延迟与费用语义。合规要求审核结论可解释:人工复核成为终态裁决点之一,异步方案的状态机增加"待人工"分支与 SLA。配额提到 5000/秒:3000 子任务的矛盾消失,但费用与超时边界重算。每次变化重写成功语义三分类与裁决点表。
闭卷验收
本页 8 道闭卷题收进了下方自测面板:先回忆,再展开参考答案与评分点,最后给三档自评。