第 13 卷 · 软件设计、架构决策与高级工程实践
本卷的定位与入口
先修:本卷完整案例与答辩需要至少一个完整后端项目,并用前面各卷的证据支持取舍。需求、状态与模块边界在学习路线 S0/S1 就开始实践,S7 再完整展开本卷;纯 Go 后端答辩不要求 AI 先修。
本卷按起步、原理、工程和进阶分层;首次进入时按阶段学习路线选取当前需要的章节。
已完成的独立章稿
13.01 问题定义与利益相关者已完成。它用虚构的 A 发送、B 离线 25 小时后补历史需求,拆分用户旅程、确认点、目标/约束/假设、六段质量属性场景与证据缺口。13.02 领域与状态建模继续区分用户/设备/会话/消息、请求与意图 ID、权威序号、事件和连续游标。13.03 模块与信息隐藏比较泄漏式与语义型 Go 接口,按可能变化的决定评审包和确认边界。13.04 架构风格与边界沿 A→权威→E9→B 对照单体、事件和独立服务的事务及故障代价。13.05 容量与数据设计按连接、权威历史、事件和设备任务四本账推增长、热键与积压恢复。13.06 质量属性的冲突以 DB 故障、长离线、非成员和热群场景评审速度、持久、安全与成本。13.07 设计说明与评审把目标、候选、故障、容量、验证与 proposed ADR 连成可反驳的纸上方案。13.08 迁移与兼容用扩展/迁移/收缩阶段审唯一权威、影读对账、旧端和新数据回退责任。13.09 跨团队交付把产品、客户端、Go、数据、安全和值班的契约、依赖与用户验收合在一张交付板。13.10 技术债与演进用变更利息、当前缺陷与未决需求分类审偿还优先级及架构漂移。13.11 复杂案例答辩让热群、长离线、旧客户端与故障域同时变化,按新约束重算并答辩。13.12 工程师的长期责任收束运行、评审、复盘、指导新人和可接手文档。十二章各含 8 节讲解、22 道分层练习,已完成本卷独立章稿。
IM 主线中的位置
比较单聊、小群、大群、客服与协作场景;讨论消息保证、扩散策略、存储、兼容、成本和迁移。
主参照与源码入口见 OpenIM 阅读地图。各章区分公开项目事实与虚构教学规则,在具备先修后对照固定源码。
参考材料怎样进入课程
采用经典资料的知识覆盖与递进思路,结合 Go 和虚构 IM 重新组织。下表对应本卷已完成的十二章;按先修选择章节并完成独立变式。
起步层
| 章节 | 要详细讲解的内容 | IM 练习与验收目标 |
|---|---|---|
| 13.01 问题定义与利益相关者 | 使用方、流程、目标、非目标、证据、约束与失败成本。 | 将单聊、群聊或客服诉求写成使用流程、目标、约束与失败成本。 |
| 13.02 领域与状态建模 | 实体、值、身份、不变量、状态转换、用例和边界。 | 定义用户、设备、会话、消息和进度的身份及状态,区分请求ID与消息意图。 |
| 13.03 模块与信息隐藏 | 接口、实现、抽象泄漏、深模块、依赖方向和变化来源。 | 比较消息接口与存储接口的使用负担,说明信息隐藏、依赖方向和变化来源。 |
原理层
| 章节 | 要详细讲解的内容 | IM 练习与验收目标 |
|---|---|---|
| 13.04 架构风格与边界 | 模块化单体、分层、事件、服务;独立部署与事务成本。 | 在不同负载与维护条件下比较单体、服务拆分和事件处理,说明事务成本。 |
| 13.05 容量与数据设计 | 访问模式、增长、热键、状态大小、恢复时间与资源预算。 | 用连接、活跃度、扇出、设备数、消息大小和保留期估算容量与恢复时间。 |
| 13.06 质量属性的冲突 | 一致性、可用、时延、成本、可维护和安全之间的取舍。 | 在时延、持久条件、多端一致性、安全、成本和维护性间比较可行承诺。 |
工程层
| 章节 | 要详细讲解的内容 | IM 练习与验收目标 |
|---|---|---|
| 13.07 设计说明与评审 | 上下文、方案比较、数据流、故障、验证、待定项和 ADR。 | 提交可审阅的IM设计,包含方案比较、状态、失败、验证和未决假设。 |
| 13.08 迁移与兼容 | 扩展/收缩、双写缺口、回填、影子读取、灰度、回滚。 | 设计历史存储或协议迁移,逐阶段标清权威写入、回填、兼容与回滚。 |
| 13.09 跨团队交付 | 契约协商、责任、里程碑、风险、依赖和可观察验收。 | 把网关、服务端、客户端与数据变更拆成可验证交付,明确契约和责任。 |
进阶层
| 章节 | 要详细讲解的内容 | IM 练习与验收目标 |
|---|---|---|
| 13.10 技术债与演进 | 问题成本、偿还机会、停止条件、收益反馈与架构漂移。 | 根据实际变更、故障和维护成本排序技术债,给出收益与停止条件。 |
| 13.11 复杂案例答辩 | 多团队领取、任务调度、搜索同步、协作空间或知识助手。 | 针对大群、长离线或旧客户端约束进行答辩,说明为什么调整原方案。 |
| 13.12 工程师的长期责任 | 运行复盘、评审、指导、文档与决策透明;成果和边界表达。 | 交付运行复盘、决策记录、接手说明和指导材料,持续验证系统承诺。 |
本卷综合任务
完成一份 IM 设计、验证、迁移、发布和接手说明,并针对群规模、离线时长、旧客户端或恢复目标变化进行答辩。
任务由学习者在具备环境时执行。理论推导、参考示例、个人实现和真实运行记录分别保存,故障与反例属于必需部分。
达到的能力
高级能力以可重复的判断、交付和协作为证据,不以读完目录或记住术语认定。
用解释、最小实现、失败变式、业务取舍四类证据评审。只有目录、术语定义或参考代码通过,不能直接记为掌握本卷。
本卷章节展开规则
每章从一个明确问题开始,先补齐本章所需定义,再推导机制;至少含一条完整执行过程、一个反例、分层练习、反馈与业务迁移。复杂章节拆成多课,不把整卷知识压成一次速读。
当前编写状态和章节深度要求见课程编写与能力验收。