E6 · 出版卷 28
参考架构
客户端、API、数据库、文件、作业、缓存与身份
*客户端、API、数据库、文件、作业、缓存与身份*
学习目标
本课是通用、机构中立内容,不使用任何真实公司、个人、矿权、项目或可识别地点。通用角色只描述职责,SYN-ARCH 标识符明确表示合成教学证据。
- 界定由“客户端、API、数据库、文件、作业、缓存与身份”治理的决定。
- 在选择实现前建立相关边界、状态与合同模型。
- 定义可测不变量、故障证据与安全发布后果。
- 基于合成证据产出一份基于视点的逻辑参考架构与边界目录并为其权衡辩护。
决策边界
依据职责、一致性、规模、信任与故障隔离选择边界,而不是依据偏好的部署产品。核心决定是每种状态由哪个组件权威保存,以及哪些交互可以同步、异步或离线。客户端可以呈现并暂存意图,但不能成为批准证据的唯一持有者;服务可以执行合同而不拥有大体量制品;缓存可以加速表示,却不能成为解释存储。身份与审计贯穿全部边界,但不能复制为不受治理的本地真相。
核心概念
参考架构是可复用的职责与关系安排,不是最终部署图。分别使用语境、功能分解、信息、并发、部署、安全与运行视点。逻辑组件因拥有连贯职责与不变量而存在。连接器具有方向、协议、合同、数据量、延迟、信任、重试与故障语义。之后再把逻辑组件映射到运行位置。这样可避免把当前托管拓扑误当成长期系统设计,也使可移植性主张可测试。
系统模型与合同
教学架构包含面向用户的客户端、执行合同的 API、保存事务元数据与状态的存储、不可变制品存储、后台作业执行器、派生数据缓存、身份政策服务与只追加审计流。摄取先进入隔离落地区再验证。发布记录通过稳定身份与摘要引用不可变制品。长时计算成为具有明确输入版本与输出清单的作业。客户端接收表示与作业状态,而不是隐藏数据库假设。跨组件配置、秘密、遥测与模式注册表均有负责人和生命周期,不在组件间漂浮。
不变量与验收标准
| 不变量 | 测试证据 | 发布后果 | |---|---|---| | 每种可变状态恰有一个受治理的权威组件。 | 合同测试与反例记录 | 阻止发布 | | 缓存与客户端绝不成为批准证据的唯一副本。 | 回放比较与摘要检查 | 隔离制品 | | 每条连接器都有声明的合同、故障与重试语义。 | 基于角色的验收追踪 | 把决定返回为未解决 | | 逻辑职责始终可与部署产品分离。 | 故障注入与恢复记录 | 保留上一已验证版本 | | 降级状态对用户与下游系统保持显式。 | 依据声明证据的领域审查 | 记录明确评审发现 |
量化工程
按实测关键路径分配端到端延迟预算,但不能把各组件百分位像同一次请求那样直接相加。记录端到端 L_{p95},并用共享追踪身份连接组件分布。对严格串行且故障独立的链,筛查近似为 A_s=prod_i A_i;相关故障会破坏该简化,必须建模为共享依赖。按边界报告吞吐量、队列深度、载荷分布、缓存命中率、存储增长与恢复目标。容量主张应声明数据集形状与并发。
数据质量、证据与不确定性
边界证据包括职责冲突、一致性需要、工作负载追踪、信任差异、独立扩展要求与恢复测试。只因“未来规模”而画出的方框只是有待验证的假设,不是证据。记录网络质量、离线使用、对象大小、更新频率、地理范围与评审节奏等假设。为未知峰值、外部可用性与运行技能维护不确定性登记表。架构应明确降级:只读、排队、较低细节、标注过期与不可用是不同状态,具有不同决策后果。
互操作性与版本
为每条连接器发布生产者、消费者、请求或事件模式、身份字段、顺序、幂等性、大小限制、超时、重试、错误形式、版本政策与可观测字段。优先使用资源与表示语义,而不是暴露内部表的远程调用。事件描述已完成事实并携带来源版本;命令表达请求意图,可以被拒绝。文件交换包含媒体类型、模式版本、参考、单位、摘要与清单。对受支持版本双向运行兼容性测试。未文档化的共享目录或数据库表仍是接口,只是危险接口。
安全与专业责任
在解析受保护资源的位置执行政策,而不能只在可见客户端或网络边界执行。认证人工与服务身份,对每个资源动作授权,并在适用时携带目的与租户或项目范围。两个组件共享网络并不自动继承信任。最少化并轮换秘密,不让秘密进入遥测,把服务凭证限制到狭窄操作。审计记录请求身份、决定、政策版本、资源身份与结果。威胁建模沿数据流与权限变化进行,包括作业执行器、缓存与导出路径。
运行流程与可观测性
通过服务目标、依赖图、运行手册与演练故障模式运行架构。每个组件暴露自身职责健康度,端到端探针则测试用户决定路径。就绪不同于存活:进程可能仍运行,却无法提供正确数据。背压防止过载下游继续接受无界工作。队列年龄与最老合格作业往往比原始队列长度更有信息。配置变更像代码一样版本化与部署。恢复演练逐一移除依赖,并确认声明的降级状态。
集成检查点
把“参考架构”制品连接到本卷前面的架构。追踪一个合成对象从来源身份穿过新边界到达已审查输出,再把一个拒绝或故障追溯到最早被违反的不变量。更新架构决定记录,写明所选方案、备选方案、假设、证据、后果、责任角色、评审状态与重新考虑触发条件。只有另一位审查者无需口头说明即可重建成功路径与阻断路径,检查点才通过。
合成案例
SYN-ARCH-02 最初让浏览器直接连接共享数据库与文件目录。评审发现没有稳定 API 合同、没有资源级授权、没有作业身份,也无法区分缓存预览与批准制品。修订后的逻辑架构引入 API 边界、不可变对象清单、显式作业服务以及按来源版本键控的派生缓存。离线客户端可以排队草稿意图,但不能把它标为批准。依赖演练移除缓存后,批准记录仍正确,预览变慢且明确显示降级。
练习与考核
- 图中每种状态由哪个组件权威保存?
- 为什么每项交互采用同步、异步或离线方式?
- 一个依赖失败时,决定路径会怎样?
- 哪些部署选择可以改变而不改变逻辑设计?
考核制品:一份基于视点的逻辑参考架构与边界目录。提交时附来源清单、验收证据、未解决风险,并简要说明为何没有选择一个合理备选方案。
常见失败模式
- 只画部署产品,不识别职责与关注点。
- 把共享数据库当成未文档化的集成接口。
- 让缓存定义解释真相或批准状态。
- 假设网络位置足以证明信任。
- 缺少工作负载形状、并发或恢复证据却声称可扩展。
来源与延伸阅读
- ISO/IEC/IEEE 42010:2022 架构描述,定义架构描述的视点、模型种类、关注点与符合性。
- ISO/IEC 25010:2023 产品质量模型,提供用于规定与评价产品质量的九类特征。
- OGC API — Features — 第 1 部分:核心,定义面向资源的空间要素集合访问方式。
- OGC API — Processes — 第 1 部分:核心,定义过程描述、作业创建、状态与结果获取。
- NIST SP 800-207 零信任架构,把信任决定聚焦于身份、资产与资源,而不是网络位置。