架构专题 图解教程
图解教程 · 中文版 · 基于 6 本经典架构书

架构之路
从方法论到微服务的一站式导读

《架构整洁之道》教你怎么想,《大型网站技术架构》《亿级流量网站架构核心技术》教你怎么扛,《微服务设计》教你怎么拆,《架构即未来》教你组织怎么长。一条主线,把六本书炼成一站。

15 个章节 16 张 SVG 图解 6 本经典书 4 大主线 零基础友好
壹 · 方法论 整洁架构 · SOLID · 依赖规则 《架构整洁之道》 想 贰 · 高并发 演进 · 缓存 · 限流 · 集群 《大型网站技术架构》等 扛 叁 · 微服务 限界上下文 · 集成 · Saga 《微服务设计》等 拆 肆 · 组织 披萨团队 · 质量属性 《架构即未来》等 长 先想清楚,再扛得住,然后拆得开,最后长得大 —— 架构师的成长主线 行为价值 · 可扩展 · 可维护 · 可演进
架构之路全景:想 → 扛 → 拆 → 长,四段主线对应本站四个部分
壹

方法论 · 先想清楚

源自《架构整洁之道》—— 软件架构的目标不是把功能做对,而是让系统在未来依然容易改变

§01 · 架构的本质与价值维度

架构 = 对「改变」的投资

出自《架构整洁之道》第 1–2 章
软件架构的目标不是把功能做对,而是让系统在未来依然容易改变。
  • 两大价值维度:行为价值(现在能用——功能正确)与结构价值(未来能改——易于变更)。只顾行为、不管结构,系统会越改越慢。
  • 架构的首要目的:支撑系统的整个生命周期,让维护、升级、扩展的成本可控。
  • 架构崩坏的信号:改一个小功能要动全局;回归测试越来越多;上线风险越来越大——说明结构价值已被透支。
  • 架构决策就是投资:每一次「先快速实现、以后再重构」都是在向未来借债,架构师要负责这笔债不失控。
行为价值 功能正确 · 现在能用 不做:功能马上崩 结构价值 易于变更 · 未来能改 不做:系统越来越僵 架构师的工作:让两个盘子长期保持平衡,而不是一边倒
行为价值与结构价值:短期的"能用"与长期的"好改"要一起买单

如果架构能让功能开发事半功倍,那么这个架构就是项目最大的红利;反之,它就是最沉重的债务。

—— 提炼自《架构整洁之道》(Robert C. Martin)
💡
一句话记忆

评判架构好不好,不看它今天快不快,而看它明年还能不能快。

§02 · 三大编程范式

范式 = 被剥夺的能力

出自《架构整洁之道》第 3–6 章
三大编程范式分别剥夺了程序员的三样东西,从而让程序变得可推导、可扩展、可组合。
  • 结构化编程(结构化剥夺 goto):只留顺序、分支、循环 → 模块可被证明正确(可推导性)。
  • 面向对象编程(OO 剥夺函数指针):用多态取代函数指针 → 依赖可以反转,组件可以独立替换(多态解耦)。
  • 函数式编程(函数式剥夺赋值):变量不可变、无副作用 → 并发安全、行为可预测(不可变性)。
  • 三大范式共同约束了什么不能做,而架构的本质正是把「不能做的事」变成架构纪律。
结构化编程 剥夺:goto 跳转 顺序 · 分支 · 循环 得到:可推导性 模块可以被证明正确 面向对象 剥夺:函数指针 封装 · 继承 · 多态 得到:多态解耦 依赖反转成为可能 函数式 剥夺:赋值操作 不可变 · 无副作用 得到:不可变性 并发安全、行为可预测 范式不是能力的加法,而是能力的减法 —— 减掉的都是坏味道
三大范式:分别剥夺 goto、函数指针、赋值,换回可推导、可扩展、可组合
🎯
为什么架构师要懂范式

面向对象的多态让「依赖倒置」成为可能——这是整洁架构能成立的技术前提;函数式的不可变性则让并发与分布式(Part 2、3 的地基)安全得多。

§03 · 设计原则:SOLID 与组件原则

从「类怎么写」到「包怎么分」

出自《架构整洁之道》第 7–14 章
SOLID 解决模块内部怎么设计,组件原则解决模块之间怎么聚合与耦合。
  • SRP 单一职责:一个模块只对一类角色(一个变化原因)负责——不是"只做一件事",而是"只为一个人变"。
  • OCP 开闭原则:对扩展开放、对修改关闭——用接口+多态加新功能,而不是改老代码。
  • LSP 里氏替换:子类型必须能替换基类型而不破坏正确性——继承不是"拿来用",而是"能替换"。
  • ISP 接口隔离:不强迫依赖方使用它用不到的方法——接口要小而专。
  • DIP 依赖倒置:高层策略不依赖低层细节,两者都依赖抽象——架构层级的核心武器。
  • 组件原则:REP(复用/发布同等)、CCP(共同闭包:一起变的放一起)、CRP(共同复用:不被一起用的不硬凑);外加无环依赖——依赖图中不允许出现环。
S · 单一职责 一个模块只为 一类角色改变 O · 开闭 扩展开放 修改关闭 L · 里氏替换 子类可替换父类 不破坏正确性 I · 接口隔离 接口小而专 不用则不依赖 D · 依赖倒置 依赖抽象 不依赖具体 组件三原则 REP 复用/发布同等 CCP 共同闭包(一起变的放一起) CRP 共同复用(不被一起用的不硬凑)
SOLID 管类、组件三原则管包,无环依赖是两者共同的红线
⚠️
最常见的设计债

把 SRP 理解成"一个类只写一个方法"(错);把 DIP 理解成"多用接口"(浅);真正的 DIP 是让依赖箭头从低层指向高层,由业务规则掌控方向。

§04 · 整洁架构:分层与依赖规则

业务规则永远在圆心

出自《架构整洁之道》第 15–22 章
依赖规则:源代码依赖只能由外向内,内层不依赖外层,外层只依赖内层的抽象。
  • 四层结构:Entity(企业业务规则)→ Use Case(应用业务规则)→ Interface Adapter(控制器/网关/展示器)→ Framework(数据库、Web、UI、框架)。
  • 依赖方向:越靠外越"技术"、越靠内越"业务";依赖箭头永远指向圆心。
  • 跨边界通信:内层定义"边界接口",外层实现它——数据库、Web、框架都可以被替换而不动业务。
  • 延迟决策:数据库、Web、框架都是实现细节,可以留到最后再决定;业务规则先定。
  • 边界(Boundary)是最有价值的投资:跨边界用接口+数据模型隔离,让变化只停留在某一层。
Entity 企业业务规则 Use Case 应用业务规则 Interface Adapter 控制器 · 网关 · 展示器 Framework 数据库 · Web · 框架 依赖方向:由外向内 依赖方向:由外向内 数据库、Web、框架都是实现细节 —— 可以最后决定,随时替换
整洁架构:依赖由外向内,业务规则(Entity / Use Case)不依赖任何技术细节

好的架构让「策略」和「细节」分离:策略是系统的灵魂,细节(数据库、Web、框架)只是随时可换的零件。

—— 提炼自《架构整洁之道》第 19–22 章
💡
与后文呼应

「依赖倒置 + 延迟决策」正是 Part 3 微服务拆分、Part 4 架构评估的思想底座——所有架构决策都在回答同一个问题:变化发生在哪里,隔离就在哪里。

贰

高并发 · 扛得住

源自《大型网站技术架构》《亿级流量网站架构核心技术》—— 大型网站的成长史,就是缓存、集群与异步的进化史

§05 · 大型网站架构演进

一部"加缓存、加机器、加服务"的进化史

出自《大型网站技术架构:核心原理与案例分析》第 1 章
大型网站不是设计出来的,而是演化出来的:每解决一个瓶颈,架构就向前推进一步。
  • ① 初始阶段:应用与数据部署在同一台服务器,先解决"有没有"。
  • ② 应用 / 数据分离:独立应用服务器 + 独立数据库服务器,各自垂直扩展。
  • ③ 引入缓存:本地缓存 → 分布式缓存(Memcached/Redis),把热点读挡在数据库之外。
  • ④ 应用服务器集群:多台应用 + 负载均衡,水平扩展处理能力。
  • ⑤ 数据库读写分离:主库写、从库读,主从复制,把读流量摊开。
  • ⑥ 反向代理 + CDN:反向代理缓存请求、CDN 就近分发静态资源。
  • ⑦ 分布式存储:分布式文件系统(HDFS 等)+ 分布式数据库,容量不再受单机限制。
  • ⑧ NoSQL + 搜索引擎:按场景选型——KV、文档、列族,加上搜索能力。
  • ⑨ 业务拆分:按业务域把大系统切成小系统(垂直拆分)。
  • ⑩ 分布式服务:把通用能力抽成独立服务(如用户、商品、订单服务)——微服务的雏形。
① 单机 应用+数据一体 ② 缓存 本地→分布式缓存 ③ 集群 负载均衡+读写分离 ④ 分布式 CDN/分布式存储/NoSQL ⑤ 服务化 业务拆分+分布式服务 每推进一步,都是被真实流量"逼"出来的 —— 先解决瓶颈,再谈优雅
演进主线:单机 → 缓存 → 集群 → 分布式 → 服务化(十个阶段浓缩为五级)
🎯
演进不是目的

每个阶段都有代价:缓存有一致性成本、集群有状态管理成本、分布式有网络故障成本。演进要贴着瓶颈走,而不是一步到位。

§06 · 架构模式与核心要素

九种模式,五大目标

出自《大型网站技术架构》第 2–3 章
所有大型网站套路都可以归纳为九种架构模式,它们共同服务于五大核心要素。
  • 九种模式:分层、分割、分布式、集群、缓存、异步、冗余、自动化、安全——每个模式解决一类典型问题。
  • 性能:响应时间与吞吐量;手段:缓存、异步、CDN、代码与存储优化。
  • 可用性:宕机时间趋零;手段:冗余(集群)、监控、自动化故障转移。
  • 伸缩性:加机器就能提升能力(水平扩展);前提:无状态设计。
  • 扩展性:加新功能不动老代码;手段:分层、模块化、消息解耦。
  • 安全性:XSS、注入、CSRF 等攻击的防御;手段:过滤消毒、参数绑定、Token 校验。
性能 可用性 伸缩性 扩展性 安全性 九种模式支撑五大目标 分层 · 分割 · 分布式 集群 · 缓存 · 异步 冗余 · 自动化 · 安全
核心五要素:性能、可用性、伸缩性、扩展性、安全性,九种模式是它们的工具箱
⚠️
要素之间会打架

追求极致性能可能伤害可维护性;过度冗余抬高成本。架构的本质是在五大要素之间做权衡,并让权衡可被测量。

§07 · 高并发设计原则

交易型系统的七条军规

出自《亿级流量网站架构核心技术》(开涛)第 1 部分
高并发不是靠某一招,而是靠七条原则叠加:无状态、拆分、服务化、消息队列、数据异构、缓存银弹、并发化。
  • 无状态:应用不保存会话状态 → 任何一台机器都能接任何请求,这是水平扩展的前提。
  • 拆分:按系统/功能/读写/AOP/模块多维度拆分,把大问题切成小问题。
  • 服务化:通用能力抽成服务,独立部署、独立演进。
  • 消息队列:服务解耦(一对多消费)、异步处理、流量削峰缓冲——注意处理消息失败与重复。
  • 数据异构:用 MQ 监听数据变更,把数据同步到合适的存储(Redis/ES/KV),各系统用自己的数据形态。
  • 缓存银弹:浏览器缓存 → APP 缓存 → CDN → 接入层(Nginx)→ 应用层 → 分布式缓存,层层拦截。
  • 并发化:无依赖的任务并行执行,缩短单请求链路时间。
高并发 七原则 · 叠加生效 无状态 拆分 服务化 消息队列 数据异构 并发化 缓存银弹 墨菲定律与康威定律,是这一切原则背后的两个"元定律"
高并发七原则:无状态、拆分、服务化、消息队列、数据异构、缓存银弹、并发化

墨菲定律:凡是可能出错的事,一定会出错;康威定律:系统的架构就是沟通架构的翻版——两个定律决定了分布式系统必须把"容错"与"对齐组织"写进基因。

—— 出自《亿级流量网站架构核心技术》第 1 章
§08 · 高可用与流量治理

缓存、降级、限流三件套

出自《亿级流量网站架构核心技术》第 1–2 部分
保护系统的三把利器:缓存(挡流量)、降级(保核心)、限流(防冲垮);外加切流量与可回滚兜底。
  • 缓存:让大部分请求不到达后端;缓存是性能与可用性的第一道防线。
  • 降级:丢卒保帅——关闭非核心功能,保证核心服务可用(哪怕有损);关键是降级开关要能随时一键切换。
  • 限流:防恶意流量与突发流量——恶意流量只打到缓存层;穿透的应用层用 Nginx limit 模块、IP deny 拦截。
  • 切流量:机房/机架/服务器故障时快速切换:DNS 切机房入口、HttpDNS(APP 场景)、LVS/HaProxy 切接入层、Nginx 切应用层。
  • 可回滚:事务、代码库、部署版本、数据版本、静态资源版本——任何变更都要有"后悔药"。
  • 负载均衡五级:HTTP 重定向 → DNS → 反向代理 → IP 层(LVS)→ 数据链路层;算法:轮询、ip_hash、least_conn、一致性哈希。
  • 健康检查:TCP 心跳 / HTTP 探测,配合失败重试(max_fails/fail_timeout)自动摘除故障节点。
缓存 挡流量 · 第一道防线 降级 丢卒保帅 · 保核心 限流 防冲垮 · 控峰值 三把利器保护系统 —— 缓存挡、降级保、限流控 用户 DNS / 反向代理 LVS(IP 层) Nginx 应用节点 应用节点 应用节点 应用节点 轮询 · ip_hash · least_conn · 一致性哈希;心跳健康检查自动摘除故障节点
左边是三把利器(缓存/降级/限流),右边是多层负载均衡(DNS → LVS → Nginx → 应用集群)
💡
高可用的真谛

可用性不是"不出故障",而是故障时系统仍有兜底:缓存扛、降级保、限流控、流量可切、版本可回滚——五条一起,才叫高可用。

叁

微服务 · 拆得开

源自《微服务设计》(Sam Newman)——《微服务架构设计模式》(Chris Richardson)—— 拆分的艺术:先想清楚边界,再谈技术

§09 · 微服务是什么

小,且自治

出自《微服务设计》第 1 章
微服务 = 很小、专注做好一件事 + 自治(独立部署、独立扩展、独立演进)。
  • 七大好处:技术异构性、弹性、扩展、简化部署、与组织结构匹配、可组合性、对可替代性的优化。
  • 技术异构性:每个服务可以选最适合自己的技术栈——搜索用 ES、推荐用 Python、核心交易用 Java。
  • 弹性与扩展:故障被限制在单个服务;只扩容热门的那个服务,而不是整个系统。
  • 简化部署与可组合:小服务独立发布、独立回滚;能力可以被自由组合成新功能。
  • 与组织结构匹配:康威定律——服务边界跟着团队边界走,小团队拥有小服务。
  • 没有银弹:微服务带来分布式系统的全部难题——网络故障、数据一致性、运维复杂度,代价必须被正视。
单体应用 一个进程 · 一个数据库 一次改动 = 整包发布 故障影响全局 扩容只能整机复制 简单时很美,复杂后很痛 微服务 用户服务 订单服务 支付服务 库存服务 物流服务 各自独立部署 · 独立扩展 · 故障隔离
单体 vs 微服务:一个"大泥球" vs 一群"小自治体"——代价是分布式复杂度
⚠️
不是越碎越好

微服务的前提是单体已经无法承载团队与流量。没有明确的业务边界就拆,只会把单体问题变成"分布式单体"。

§10 · 建模服务与限界上下文

好服务 = 松耦合 + 高内聚

出自《微服务设计》第 2–3 章
服务边界应该由业务能力决定,而不是由技术分层决定;限界上下文是划定边界的地图。
  • 松耦合:服务之间尽量少知道彼此——改 A 不需要动 B,A 挂了 B 尽量不受影响。
  • 高内聚:强相关的行为放在一起——一个业务能力及其数据,应该在同一个服务内闭环。
  • 限界上下文(Bounded Context):来自 DDD——同一个概念在不同上下文里有不同含义("订单"在销售、仓储、财务语境下是三种东西)。
  • 按业务功能划分:从业务能力出发找边界,而不是"把 controller/service/dao 拆成三个微服务"。
  • 过早划分:业务还没摸清就拆,是微服务最常见的失败原因——先收敛边界,再切服务。
  • 技术边界是陷阱:按"接口层、业务层、数据层"拆出来的服务,只会放大分布式问题。
销售上下文 订单:下单入口 购物车 · 结算 客户看到的"订单" 仓储上下文 订单:拣货单 库存 · 出库 仓库看到的"订单" 财务上下文 订单:应收凭证 发票 · 对账 财务看到的"订单" 同一个"订单",三种语义 —— 每个限界上下文就是一个候选的微服务边界
限界上下文:同一概念在不同上下文语义不同,边界即服务边界
🎯
实践建议

从业务能力出发列候选服务清单;给每个服务画出它的数据归属;先用模块化单体验证边界(《微服务设计》的建议),边界稳定了再物理拆分。

§11 · 服务集成:同步与异步

让服务"会说话"

出自《微服务设计》第 4 章
理想集成的四个要求:避免破坏性修改、API 技术无关、易于消费方使用、隐藏内部实现细节。
  • 共享数据库是反模式:表面解耦、实则共享一切——改表结构就牵动所有服务。
  • 同步 vs 异步:同步(REST/RPC)直观但链路脆弱;异步(消息)解耦削峰但一致性难。
  • RPC 的三大陷阱:技术耦合(语言绑定)、本地调用 ≠ 远程调用(网络延迟/超时)、脆弱性(链上任何一环挂掉整体失败)。
  • REST:用 HTTP 语义暴露资源,技术无关、易于消费;注意超媒体与合理的约定数量。
  • 事件驱动:服务发布"事件",其他服务订阅——发布者不知道谁在听,天然解耦。
  • 编排 vs 协同:编排=中心指挥(一个服务串流程,简单但中心化);协同=各自响应事件(去中心但难追踪)。
  • 版本管理:能推迟就推迟;必须变时优先向后兼容(加字段、语义版本号),再考虑双版本共存。
同步:调用等待结果 服务A 服务B 服务C 异步:消息解耦 生产者 消息队列 消费者 编排 Orchestration 指挥者 服务A 服务B 服务C 中心指挥 · 简单可控 协同 Choreography 事件 服务A 服务B 服务C 各自响应事件 · 去中心
同步 vs 异步;编排 vs 协同 —— 没有绝对好坏,只有适用场景

本地调用和远程调用并不相同:远程调用有网络延迟、会超时、可能部分成功——把它当本地调用写,是分布式系统最贵的学费。

—— 提炼自《微服务设计》第 4 章
§12 · 数据管理与韧性

最难的两个字:一致、容错

出自《微服务架构设计模式》—— 数据专属、Saga、熔断与可观测
每个服务拥有自己的数据库;跨服务的事务交给 Saga;面对故障用熔断、重试、隔离,并用可观测性看清一切。
  • 数据库 per 服务:数据所有权跟着服务走,才能真解耦;共享库会让"微服务"名存实亡。
  • Saga(长事务/补偿事务):把一个大事务拆成一组本地事务,失败时按逆序执行补偿动作(如"扣款失败→取消订单")。
  • CQRS:读写分离模型——写模型保证一致性,读模型针对查询优化,中间靠事件同步。
  • 事件溯源(Event Sourcing):把状态变化记录为事件流,状态可随时重放——审计友好、逻辑清晰,但心智成本高。
  • 熔断器(Circuit Breaker):下游连续失败时"断开",快速失败而非拖死调用方;半开试探恢复。
  • 重试与隔离:超时 + 有界重试(防雪崩);舱壁隔离(Bulkhead)——每个依赖独立的连接池/线程池,一个挂了不拖垮全部。
  • 可观测三支柱:日志(Logs)、指标(Metrics)、分布式追踪(Traces)——微服务没有它就像蒙眼开车。
Saga:补偿式长事务 ① 创建订单 ② 扣减库存 ③ 扣款 ③′ 退回扣款 ②′ 回补库存 第③步失败 → 逆序补偿②′①′ 最终一致 · 无全局锁 熔断器 Circuit Breaker 关闭 正常调用 断开 快速失败 半开 试探恢复 连续失败 → 断开;超时窗口后 → 半开试探 成功 → 关闭,失败 → 再次断开
左:Saga 逆序补偿换最终一致;右:熔断器三态(关闭/断开/半开)防雪崩
💡
容错三板斧

超时设上限、重试有上限(且要退避)、依赖要隔离——再加一板斧:能降级就降级(Part 2 的三件套在微服务里同样适用)。

肆

组织与演进 · 长得大

源自《架构即未来》《软件架构实践》—— 系统扩展的尽头是组织扩展:人、流程与质量属性

§13 · 架构即未来:人与组织

扩展性首先是组织问题

出自《架构即未来:现代企业可扩展的Web架构、流程和组织》
系统的扩展性受限于组织的扩展能力:人是最重要的因素,其次才是技术与流程。
  • 组织扩展成本:团队越大,沟通链路越多,个人平均产出下降——规模不经济从"组织"开始。
  • 披萨团队规则:团队规模不能大于"两张披萨能喂饱的人数"(约 6–8 人)——小团队沟通成本低、响应快。
  • 敏捷型组织结构:在职能型/矩阵型基础上演进——团队自主管理、自给自足,快速响应市场。
  • 领导 vs 管理:管理是"推"(pushing,推动执行),领导是"拉"(pulling,设定方向);领导定目的地与路线图,管理设法到达。
  • 股东价值视角:技术团队要能用指标回答"IT 工作对业务意味着什么"——理解业务的挑战、风险与策略。
  • 扩展立方体(AKF Scale Cube):X 轴克隆(水平复制)、Y 轴功能拆分(按业务切服务)、Z 轴数据分片(按数据切分)——扩展的三种基本招式。
X · 克隆(水平复制) Y · 功能拆分 Z · 数据分片 AKF 扩展立方体 —— 三维扩展,任意组合 X 轴:加机器;Y 轴:切服务;Z 轴:分数据 —— 但每一次扩展,都要求组织能跟上
AKF Scale Cube:X 克隆 · Y 拆分 · Z 分片,《架构即未来》的扩展方法论核心

一个球队要成功,必须有好队员(人员)、好阵型(组织)、好战术(流程)——系统扩展的道理一模一样。

—— 出自《架构即未来》读书笔记(博客园)
🎯
与康威定律互文

「系统架构是沟通架构的翻版」——想要微服务边界清晰,先让团队边界清晰;组织怎么分,系统就怎么长。

§14 · 软件架构实践:质量属性与评估

架构 = 质量属性的权衡记录

出自《软件架构实践》(Software Architecture in Practice, Bass 等)
架构决策本质上是在质量属性之间权衡;而每个质量属性都应该能被一个场景说清楚。
  • 质量属性清单:可用性、可修改性、性能、安全性、可测试性、可部署性、可伸缩性等——没有哪个系统能全部拉满。
  • 质量属性场景(QA Scenario):六要素——刺激源、刺激、环境、工件、响应、响应度量;把"要快"翻译成"90% 请求在 200ms 内返回"。
  • 架构视图(Views):模块视图(代码怎么分)、组件-连接视图(运行时怎么协作)、部署视图(跑到哪些机器上)——单一视图永远讲不清架构。
  • ATAM(架构权衡分析方法):通过场景驱动的架构评估,找出风险点(Risk)与权衡点(Tradeoff),在重大投入前发现问题。
  • 架构决策要留痕:ADR(架构决策记录)——为什么选 A 不选 B,后人才能"知其所以然"地演进。
刺激源 谁触发 刺激 什么事件 环境 什么状态下 工件 影响谁 响应 怎么反应 响应度量 可量化 质量属性场景 = 六要素模板 示例:"当(用户)在(高峰期)发起(下单请求),(订单系统)应在 1 秒内返回成功(度量)" 场景写不出来的质量属性 = 没定义清楚的质量属性
质量属性场景六要素:刺激源→刺激→环境→工件→响应→响应度量
⚠️
评估要趁早

架构问题在部署后才发现,修复成本是指数级的。ATAM 的价值是在画大饼之前,先把风险点和权衡点摆上桌面。

§15 · 架构师的修炼

演化式架构师:定原则,而不是当独裁者

出自《微服务设计》第 2 章 + 本书主线总结
架构师不是"画完图就不管"的人,而是持续导航的人:定原则、立标准、清债务、带团队走对路。
  • 战略目标 → 原则 → 实践:先有战略目标(如"快速上线"),导出原则(如"API 向后兼容"),再落到实践(如"语义化版本")。
  • 三条硬标准:监控(没有监控就没有发言权)、接口(接口契约是团队的宪法)、架构安全性(安全不是事后补丁)。
  • 代码治理靠示范:裁剪服务模板、树立范例,而不是靠"禁止令"——好架构是"长"出来的。
  • 技术债务管理:债务不可怕,可怕的是无记录的债务;建清单、定偿还计划、设例外流程。
  • 能力模型:技术深度 × 业务理解 × 沟通协调 × 决策担当——四象限缺一不可。
  • 像领导一样"拉":设定目的地与路线图(愿景与原则);像管理者一样"推":让原则落地为纪律(评审与度量)。
技术深度 懂原理、能落地、会权衡 没有深度就没有判断力 业务理解 懂商业模式、懂股东价值 没有业务感就没有方向感 沟通协调 对齐团队、影响决策者 架构是组织共识的产物 决策担当 敢拍板、敢担责、留记录 没有担当就没有架构 架构师 = 深度的技术 × 敏锐的业务 × 顺畅的沟通 × 果断的决策
架构师能力四象限:技术深度 · 业务理解 · 沟通协调 · 决策担当
💡
回到起点

Part 1 教你把系统设计"整洁"(方法论),Part 2 教你把流量扛住(高并发),Part 3 教你把系统拆开(微服务),Part 4 教你把组织带大(演进)——架构之路没有终点,只有下一段路。

附

A1 · 名词速查

二十四张术语卡,读完本页不查字典

依赖倒置DIP

高层策略不依赖低层细节,两者都依赖抽象;依赖方向由调用方掌控。

开闭原则OCP

对扩展开放、对修改关闭:加功能不动老代码。

限界上下文Bounded Context

DDD 概念:一个概念在不同业务上下文有不同语义,上下文即服务边界。

康威定律Conway's Law

系统架构是组织沟通结构的翻版——团队怎么分,系统就怎么长。

墨菲定律Murphy's Law

会出错的事一定会出错——分布式系统默认一切都会失败。

Saga长事务

把跨服务事务拆成局部事务序列,失败时逆序补偿,达到最终一致。

CQRS读写分离模型

写模型保证一致性,读模型针对查询优化,中间用事件同步。

事件溯源Event Sourcing

状态由事件流推导而来,可重放、可审计。

熔断器Circuit Breaker

下游故障时快速失败(断开),超时后半开试探,防雪崩。

幂等Idempotency

同一操作执行多次结果一致——消息重试、重复请求的必备设计。

降级Degradation

丢卒保帅:关闭非核心功能,保证核心可用(哪怕有损)。

限流Rate Limiting

限制单位时间请求量,防恶意流量与突发峰值冲垮系统。

缓存穿透

查询不存在的数据,缓存永远不命中,压力直达数据库——用空值缓存/布隆过滤解决。

缓存雪崩

大量缓存同时失效,请求全部打到数据库——错峰过期 + 多级缓存。

无状态Stateless

应用不保存会话状态,任意节点可接任意请求——水平扩展的前提。

服务发现Service Discovery

服务实例动态注册与发现,配合负载均衡,解决"地址会变"的问题。

API 网关API Gateway

微服务的统一入口:路由、鉴权、限流、聚合——给客户端一个门面。

编排 Orchestration

中心指挥者串起业务流程:简单可控,但中心成为瓶颈点。

协同 Choreography

各服务响应事件自行协作:去中心,但流程难追踪。

可观测性Observability

日志 + 指标 + 分布式追踪,让分布式系统"看得见"。

质量属性场景QA Scenario

六要素描述一个质量需求(刺激源→刺激→环境→工件→响应→度量),让它可验证。

ATAM

架构权衡分析方法:场景驱动的架构评估,识别风险点与权衡点。

扩展立方体AKF Scale Cube

X 克隆、Y 拆分、Z 分片——扩展的三种基本维度。

披萨团队Two-Pizza Team

团队规模以"两张披萨喂饱"为上限(6–8 人),控制沟通成本。

书

A2 · 书单与资源

本站在六本经典书基础上整理而成;附正版阅读入口

书名作者本站在哪一部分正版阅读(微信读书)
《架构整洁之道》Robert C. MartinPart 1 方法论微信读书
《大型网站技术架构:核心原理与案例分析》李智慧Part 2 高并发微信读书
《亿级流量网站架构核心技术》张开涛(开涛)Part 2 高并发微信读书
《微服务设计》Sam NewmanPart 3 微服务微信读书
《微服务架构设计模式》Chris RichardsonPart 3 微服务微信读书
《架构即未来:现代企业可扩展的Web架构、流程和组织》Martin L. Abbott 等Part 4 组织与演进微信读书
《软件架构实践》Len Bass 等Part 4 组织与演进微信读书
📚
关于版权

本站全部图解为原创 SVG,要点文字为对原书内容的提炼改写。建议通过微信读书等正版渠道阅读全书,支持作者。