来源书籍
从零开始学架构
系统架构类
类别清单覆盖
7/7
全书概览
从零开始学架构
Skill 版本:v7
类别:系统架构类
四象限结论:经典原理(高信息浓度 × 高稳定性)
理由:全书是李运华在极客时间的专栏合集,共50讲,系统讲解架构设计的方法论、复杂度四大来源(高性能/高可用/可扩展性/低成本安全规模)、以及对应的经典技术方案。抽样精读第1讲(系统/子系统/模块/组件/框架/架构六个概念的严格辨析,从维基百科定义出发逐条提炼关键要素并给出反例)和第22讲(CAP理论,逐字对比Robert Greiner文章前后两版定义的措辞差异,精确辨析”see”与”read”、”every request”与”non-failing node”等用词差异背后的语义区别,并推导出分布式系统只能选CP或AP而非CA的结论)后确认:信息浓度极高——不是罗列”CAP是什么”,而是追问”CAP的精确定义为什么会从第一版演进到第二版、每一个措辞改动背后解决了什么歧义”;稳定性也很高——书中核心讲的是架构设计方法论、复杂度本质来源、CAP/FMEA等理论工具,这些内容即使脱离具体技术栈(书中提及的MySQL/Redis/Nginx等仅作为案例)依然成立,不会因为工具迭代而过时。因此判定为”经典原理”,是目前v7重跑以来遇到的信息浓度与稳定性都属最高档的一本书。
说明(2026-09-04):本书此前已有一版v6笔记(声明”Skill 版本:v6(2026-08-28 按 v6 规则续补;既有评级、章节进度与 75 张章节卡片保留)”),按v7重跑规则已用git rm -rq整体清空重建;本次评级结论、章节筛选、卡片内容均从零重新生成。EPUB内部结构:全书正文打包进5个text0000N.html大文件,toc.ncx用filepos锚点定位58个导航项,其中50个是正文编号讲(01-50),其余为说明/开篇词/结束语/书单/4次”华仔,放学别走”读者问答特别节目,非正式讲次不进入精读表。已确认50讲编号连续、无重复起始点,是李运华本人独立撰写的单本专栏合集,非拼装的多本书。
提取脚本:notes/从零开始学架构/_extract.py(已随笔记一起提交到git,_epub-src/OEBPS/为配套解压后的EPUB内容,同样已提交)
(用法:python3 notes/从零开始学架构/_extract.py <起始playOrder> <结束playOrder> <输出文件>,playOrder取自_epub-src/OEBPS/toc.ncx中<navPoint playOrder="N">;每一讲对应一个独立的playOrder,起止传同一个数字即可提取单讲)
章节筛选
全书50讲围绕架构设计方法论与四大复杂度来源(高性能/高可用/可扩展性/低成本安全规模)展开,信息浓度普遍很高,按”硬性优先”规则全部标记精读;”华仔,放学别走”读者问答特别节目、开篇词、结束语、书单等非编号正文内容标记略读,不进入卡片生成。
| 讲次 | 标题 | playOrder | 精读/略读 | 状态(pending/done) | 卡片数 |
|---|---|---|---|---|---|
| 01 | 架构到底是指什么? | 3 | 精读 | done | 3 |
| 02 | 架构设计的历史背景 | 4 | 精读 | done | 3 |
| 03 | 架构设计的目的 | 5 | 精读 | done | 2 |
| 04 | 复杂度来源:高性能 | 6 | 精读 | done | 4 |
| 05 | 复杂度来源:高可用 | 7 | 精读 | done | 3 |
| 06 | 复杂度来源:可扩展性 | 8 | 精读 | done | 3 |
| 07 | 复杂度来源:低成本、安全、规模 | 9 | 精读 | done | 3 |
| 08 | 架构设计三原则 | 10 | 精读 | done | 5 |
| 09 | 架构设计原则案例 | 11 | 精读 | done | 2 |
| 10 | 架构设计流程:识别复杂度 | 13 | 精读 | done | 2 |
| 11 | 架构设计流程:设计备选方案 | 14 | 精读 | done | 3 |
| 12 | 架构设计流程:评估和选择备选方案 | 15 | 精读 | done | 4 |
| 13 | 架构设计流程:详细方案设计 | 16 | 精读 | done | 3 |
| 14 | 高性能数据库集群:读写分离 | 17 | 精读 | done | 3 |
| 15 | 高性能数据库集群:分库分表 | 18 | 精读 | done | 5 |
| 16 | 高性能NoSQL | 20 | 精读 | done | 5 |
| 17 | 高性能缓存架构 | 21 | 精读 | done | 3 |
| 18 | 单服务器高性能模式:PPC与TPC | 22 | 精读 | done | 3 |
| 19 | 单服务器高性能模式:Reactor与Proactor | 23 | 精读 | done | 4 |
| 20 | 高性能负载均衡:分类及架构 | 24 | 精读 | done | 3 |
| 21 | 高性能负载均衡:算法 | 25 | 精读 | done | 3 |
| 22 | 想成为架构师,你必须知道CAP理论 | 26 | 精读 | done | 5 |
| 23 | 想成为架构师,你必须掌握的CAP细节 | 27 | 精读 | done | 6 |
| 24 | FMEA方法,排除架构可用性隐患的利器 | 28 | 精读 | done | 4 |
| 25 | 高可用存储架构:双机架构 | 29 | 精读 | done | 5 |
| 26 | 高可用存储架构:集群和分区 | 30 | 精读 | done | 5 |
| 27 | 如何设计计算高可用架构? | 31 | 精读 | done | 5 |
| 28 | 业务高可用的保障:异地多活架构 | 33 | 精读 | done | 4 |
| 29 | 异地多活设计4大技巧 | 34 | 精读 | done | 4 |
| 30 | 异地多活设计4步走 | 35 | 精读 | done | 4 |
| 31 | 如何应对接口级的故障? | 36 | 精读 | done | 5 |
| 32 | 可扩展架构的基本思想和模式 | 37 | 精读 | done | 3 |
| 33 | 传统的可扩展架构模式:分层架构和SOA | 38 | 精读 | done | 5 |
| 34 | 深入理解微服务架构:银弹 or 焦油坑? | 39 | 精读 | done | 5 |
| 35 | 微服务架构最佳实践 - 方法篇 | 40 | 精读 | done | 3 |
| 36 | 微服务架构最佳实践 - 基础设施篇 | 41 | 精读 | done | 5 |
| 37 | 微内核架构详解 | 42 | 精读 | done | 3 |
| 38 | 架构师应该如何判断技术演进的方向? | 43 | 精读 | done | 3 |
| 39 | 互联网技术演进的模式 | 44 | 精读 | done | 4 |
| 40 | 互联网架构模板:”存储层”技术 | 45 | 精读 | done | 3 |
| 41 | 互联网架构模板:”开发层”和”服务层”技术 | 46 | 精读 | done | 5 |
| 42 | 互联网架构模板:”网络层”技术 | 47 | 精读 | done | 4 |
| 43 | 互联网架构模板:”用户层”和”业务层”技术 | 48 | 精读 | done | 4 |
| 44 | 互联网架构模板:”平台”技术 | 49 | 精读 | done | 6 |
| 45 | 架构重构内功心法第一式:有的放矢 | 50 | 精读 | done | 4 |
| 46 | 架构重构内功心法第二式:合纵连横 | 51 | 精读 | done | 3 |
| 47 | 架构重构内功心法第三式:运筹帷幄 | 52 | 精读 | done | 4 |
| 48 | 再谈开源项目:如何选择、使用以及二次开发? | 53 | 精读 | done | 8 |
| 49 | 谈谈App架构的演进 | 54 | 精读 | done | 4 |
| 50 | 架构实战:架构设计文档模板 | 55 | 精读 | done | 5 |
(非正文内容:说明/开篇词(playOrder 1-2)、4次”华仔,放学别走”读者问答特别节目(playOrder 12/19/32/56)、结束语(57)、架构师必读书单(58),均为略读,不生卡)
实践卡进度
| 序号 | 实践标题 | 实践方式 | 状态(pending/done) | 关联章节 | 产出 |
|---|---|---|---|---|---|
| 1 | React Native / Weex / Flutter:跨平台格局核验 | 证据验证 | done | 第49讲 | 已通过WebSearch核验Weex已于2021年从Apache Incubator退休、当前边缘化,React Native与Flutter仍是2026年跨平台开发两大主流方案(份额约35%对46%),产出《2018年三方案格局 vs 2026年现状》对照表框架,见ideas/idea-001-React Native Weex Flutter跨平台格局核验.md |
| 2 | 服务网格:服务中心两种模式之外的”第三条路”核验 | 证据验证 | done | 第41讲 | 已通过WebSearch核验Service Mesh(Istio+Envoy)是当前微服务治理主流方案,其sidecar代理模式介于书中”服务名字系统”与”服务总线系统”之间、书中二分类框架未能覆盖,产出对照说明框架,见ideas/idea-002-服务网格是服务中心两种模式之外的第三条路核验.md |
待关联术语
| 术语名 | 出现章节 | 一句话语境 |
|---|---|---|
| 备选方案模板中”备选方案1直接引入Kafka/方案2集群+MySQL存储/方案3集群+自研存储”三个方案的具体描述、”备选方案评估”360度环评具体展开、高性能/其他设计的具体章节留白提示 | 50 | 原文对具体方案描述与360度环评均注明”此处省略”,属于占位性模板说明而非实际内容;核心方法论(5W1H8C框架、性能定量推导、文档四段结构、高可用明确失败边界、无设计点也要写明)已在ch50-001至ch50-005中概括,未单独展开生卡 |
| 手机淘宝首页/微信”发现”tab配图、《Atlas:手淘Native容器化框架和思考》《微信Android客户端架构演进之路》《Web研发模式演变》三篇外部引用文章、本讲结尾思考题”App架构接下来会如何演进” | 49 | 属于外链配图与延伸阅读文章链接及开放式思考题,非本讲结论性正文内容;核心方法论(五阶段演进、App与后端拆分区别、组件化容器化发布方式区别、跨平台现状)已在ch49-001至ch49-004中概括,未单独展开生卡 |
| 本讲结尾思考题”倾向购买云厂商托管的开源同款系统还是自建”、”专栏特别放送第3期《如何高效学习开源项目》”引用链接 | 48 | 属于开放式思考题与跨期引用链接,非本讲结论性正文内容;核心方法论(选的三聚焦、用的三要点、改的两策略)已在ch48-001至ch48-008中概括,未单独展开生卡 |
| X项目三阶段策略配图、本讲结尾思考题”2年才能完成的架构重构项目该如何处理” | 47 | 属于外链配图与开放式思考题,非结论性正文内容;核心方法论(三大缺陷、X/S系统三阶段对比、分段实施四步法、先易后难三理由)已在ch47-001至ch47-004中概括,未单独展开生卡 |
| 本讲结尾思考题”架构师为何要做沟通推动而非交给项目经理”及读者评论区三点回答与作者回复 | 46 | 读者评论区问答内容非作者原文正文,属于非作者生成内容;核心方法论(合纵用数据说话、连横两大阻力应对、C系统换位思考案例)已在ch46-001至ch46-003中概括,未单独展开生卡 |
| M/S/X三系统各自的原始架构配图与重构后架构配图、本讲结尾思考题”分析你目前开发的系统是否需要架构重构” | 45 | 属于外链架构配图与开放式思考题,非结论性正文内容;核心方法论(重构三难点、有的放矢识别核心问题、重构vs优化判断法、三案例根因对比)已在ch45-001至ch45-004中概括,未单独展开生卡 |
| 运维平台/测试平台/数据平台/管理平台各自的架构配图、本讲结尾思考题”运维/测试平台该由中间件团队还是运维测试团队自建” | 44 | 属于外链架构图与开放式思考题,非结论性正文内容;核心方法论(四大职责/四化、标准化中间层适配、可视化本质、测试平台任务管理串联、数据平台规模门槛、权限管理两分法)已在ch44-001至ch44-006中概括,未单独展开生卡 |
| CAS单点登录具体架构图链接、电商系统三阶段拆分与虚拟业务域架构的配图、本讲结尾思考题”虚拟业务域划分粒度粗细及数量建议” | 43 | 属于外链架构图与开放式思考题,非文字性结论内容;核心方法论(SSO/OAuth两大目标、用户管理为何数据量大却不难、虚拟业务域用网关Facade收编子系统爆炸)已在ch43-001/ch43-004中概括,未单独展开生卡 |
| 本讲结尾思考题”为什么可以购买负载均衡和CDN服务,但却不能购买多机房和多中心服务?” | 42 | 思考题本身是作者留给读者的开放提问,非结论性正文内容,核心答案已在ch42-004多中心质变结论中给出(数据一致性/事务性与具体业务强绑定,无通用方案可买),未单独展开生卡 |
| 主备算法细分(冷备/温备/热备)、1主3备/2主2备/3主1备/4主0备等集群分配算法的具体展开、ZooKeeper(1主多备)与Memcached(全主0备)的具体案例 | 05 | 属于具体分配算法参数和工具案例的简短提及,核心可迁移方法论(高可用本质是冗余而非扩展/计算高可用与存储高可用的本质差异/状态决策三种方式及固有缺陷)已在ch05-001至ch05-003中概括,未单独展开生卡 |
| 摩尔定律与CPU硬件性能发展历史、Nginx/JBoss/Redis/Memcache各自采用多进程或多线程或单进程实现高性能的具体案例对比(体现”没有最新的就是最好的”,可与ch04-002进程线程演进链条关联但未单独展开)、支付宝双11每秒12万笔支付/微信红包每秒76万个的具体业务数据 | 04 | 属于硬件发展史背景与具体技术组件实现案例罗列,核心可迁移方法论(技术带来复杂度取决于替代还是并存关系/进程线程演进链条/任务分配复杂度递增/任务分解的收益与代价)已在ch04-001至ch04-004中概括,未单独展开生卡 |
| 机器语言/汇编语言/高级语言的具体演进历史与代码示例(Fortran/LISP/Cobol)、NATO会议与”软件工程”一词的由来、《人月神话》与IBM System/360项目背景 | 02 | 属于计算机语言发展史的背景铺垫,是通俗历史科普而非架构原理本身,核心可迁移方法论(两次软件危机的根本原因/模块对象组件的拆分粒度递进/软件架构问题的独特起源)已在ch02-001至ch02-003中概括,未单独展开生卡 |
| 讲末读者留言与作者回复(如具体业务场景下是否要做可扩展性设计的个案讨论) | 06 | EPUB导出正文时附带的读者评论区,非作者原创正文内容,仅作为ch06-001卡片”评估代价过大可暂缓/适度冗余降低复杂度”结论的辅助佐证摘录,不单独生卡 |
| 淘宝架构各阶段具体技术选型细节(SQL Relay连接池死锁问题、Oracle RAC/NetApp NAS存储、数据分库/放弃EJB/引入Spring/加缓存/加CDN/采用JBoss的具体动作清单、去IOE的具体实施) | 09 | 属于具体技术组件名称和历史选型细节的罗列,核心可迁移方法论(”买→重构→自研”的原则转换逻辑)已在ch09-001中概括,未单独展开生卡 |
| 手机QQ各阶段具体架构图与容量数字(接入服务器内存2KB/在线用户估算、IM 2.X/3.X/4.X具体架构图、存储架构与通信架构的内部模块划分) | 09 | 属于具体容量估算数据和架构图细节,核心可迁移方法论(用户规模倒逼升级/亿级阶段从打补丁转向推倒重来)已在ch09-002中概括,未单独展开生卡 |
| 消息队列开源方案罗列(ActiveMQ、RabbitMQ)、集群存储可选组件(HBase、Redis与MySQL结合)、自研文件系统可参考对象(LevelDB、HBase)、《技术的本质》一书对技术”组合”与”递归”特征的论述 | 11 | 属于具体可选技术组件的罗列示例,核心可迁移方法论(备选方案设计三准则、技术组合本质)已在ch11-001至ch11-003中概括,未单独展开生卡 |
| 讲末读者留言对Kafka与RocketMQ的详细技术对比(适用场景/单机TPS/刷盘与Replication方式/消息顺序性/消费失败重试/定时消息/分布式事务消息/消息查询与回溯等7个维度) | 12 | EPUB导出正文附带的读者评论区内容,非作者原创正文,属于读者自行整理的延伸技术资料,不计入本讲卡片来源 |
| 讲末大量读者留言与作者回复(数据库性能优化的完整排查顺序:硬件优化→数据库调优→引入缓存→程序优化→再分库分表;分库分表的进一步实操讨论,如淘宝单元化改造按买家维度拆分卖家维度不拆分、水平拆分后分页查询要”先组合查后分页”、二次order by的性能权衡等) | 15 | EPUB导出正文附带的读者评论区内容,非作者原创正文,属于读者与作者的问答延伸,不计入本讲卡片来源 |
| 讲末读者留言关于”为何没有开源存储平台方案但云计算都提供存储平台服务”的分析(开发成本高需高级工程师/需求方主要是大公司数量少/云平台收费能变现而开源投入大受众少) | 40 | EPUB导出正文附带的读者评论区内容,非作者原创正文,属于读者对思考题的回答,不计入本讲卡片来源 |
引用文献
| 标题 | 类型 | 出现章节 | 一句话语境 |
|---|
类别清单核对(系统架构类)
| 维度 | 覆盖状态 | 关联卡片标题或未覆盖理由 |
|---|---|---|
| 服务拆分原则 | 已覆盖 | ch32-001可扩展的基本思想是拆及三种拆分思路的范围关系、ch33-004SOA的诞生背景及三个关键概念服务ESB与松耦合、ch43-004虚拟业务域分久必合用网关Facade收编子系统爆炸 |
| 通信机制(同步/异步取舍) | 已覆盖 | ch41-004服务中心的两种实现方式服务名字系统与服务总线系统、ch41-005消息队列解决蜘蛛网式异步通知问题带来的五个好处、ch11/ch12/ch13前浪微博消息队列三个备选方案对比与最终决策 |
| 一致性与事务权衡 | 已覆盖 | ch22-002一致性定义的精确化从节点同时可见到客户端读到最新写入、ch23-005ACID与CAP的A和C同名不同义、ch16-002/ch16-003 KV存储与文档数据库用数据结构或no-schema换取部分ACID |
| 可观测性设计 | 已覆盖 | ch44-001运维平台四大职责与四化设计要素、ch44-003可视化的本质是仪表盘式的信息压缩、ch50-004高可用设计要写清楚哪里会丢而非假装100%可靠 |
| 容错设计(熔断/降级/重试) | 已覆盖 | ch31-002降级丢车保帅的核心思想及两种实现方式的取舍、ch31-003熔断与降级的本质区别应对自身故障还是依赖方故障、ch31-004限流基于请求限流与基于资源限流的对比 |
| 扩展性瓶颈与应对 | 已覆盖 | ch20-001高性能集群的本质是任务分配、ch32系列可扩展基本思想是拆及三种拆分方式对应的典型架构、ch44-005数据平台三大职责与数据价值的规模门槛 |
| 部署与发布策略(灰度/回滚) | 已覆盖 | ch49-003组件化与容器化的核心区别静态发布与动态发布、ch48-005用开源项目再深入的研究测试也替代不了灰度、ch47系列分段实施策略中的分阶段上线节奏规划 |
7/7维度已覆盖,均为书中已有卡片充分论证,无需补充生成新卡片。
资金安全问题案例
| 问题标题 | 问题卡 | 解决方案卡(如有) | 出现章节 | 一句话说明 |
|---|
章节与卡片
01 架构到底是指什么?
- 架构的边界 普通读书笔记卡
- 系统的三要素:关联、规则、能力 普通读书笔记卡
- 架构重在关系 普通读书笔记卡
- 模块与组件的本质区别:逻辑拆分与物理拆分 普通读书笔记卡
- 框架关注规范,架构关注结构:同一系统的多个"正确"架构 普通读书笔记卡
02 架构设计的历史背景
- 分工驱动架构 普通读书笔记卡
- 两次软件危机的根本原因:逻辑复杂与扩展复杂 普通读书笔记卡
- 约束迁移 普通读书笔记卡
- 软件架构诞生的历史必然性:模块、对象、组件的拆分粒度递进 结构图卡
- 软件架构问题的独特起源:不是为解决危机而生 普通读书笔记卡
03 架构设计的目的
- 架构解决复杂度 普通读书笔记卡
- 架构设计的四个常见误区 结构图卡
- 先识别问题 普通读书笔记卡
- 架构设计的真正目的:解决复杂度,而非追求"高XX"或复制别人 普通读书笔记卡
04 复杂度来源:高性能
- 性能分层 普通读书笔记卡
- 技术是否带来复杂度,取决于替代旧技术还是开辟新领域 普通读书笔记卡
- 性能带来复杂度 普通读书笔记卡
- 进程与线程的演进链条:每一步解决上一步的遗留问题 结构图卡
- 任务分配带来的复杂度递增:从单机到多任务分配器集群 结构图卡
- 任务分解为什么能提升性能,以及拆分过细为什么反而降低性能 结构图卡
05 复杂度来源:高可用
- 冗余悖论 普通读书笔记卡
- 高可用的本质是冗余,而非高性能的"扩展" 普通读书笔记卡
- 状态决定难度 普通读书笔记卡
- 计算高可用与存储高可用的本质差异 结构图卡
- 高可用状态决策的三种方式及其固有缺陷 结构图卡
06 复杂度来源:可扩展性
- 扩展隔离变化 普通读书笔记卡
- 可扩展性的两个基本条件:正确预测变化与完美封装变化 普通读书笔记卡
- 预测变化边界 普通读书笔记卡
- 预测变化的三重复杂性 普通读书笔记卡
- 应对变化的两种方案:变化层稳定层与抽象层实现层 结构图卡
07 复杂度来源:低成本、安全、规模
- 成本也是架构 普通读书笔记卡
- 低成本是架构设计的附加约束而非首要目标 普通读书笔记卡
- 规模改变问题 普通读书笔记卡
- 功能安全"防小偷"与架构安全"防强盗"的本质区别 结构图卡
- 规模复杂度的本质是量变引起质变 普通读书笔记卡
08 架构设计三原则
- 合适优先 普通读书笔记卡
- 架构设计的本质是应对不确定性,而非编程式的确定性 普通读书笔记卡
- 简单压倒炫技 普通读书笔记卡
- 合适原则:合适优于业界领先,及其三个失败根源 结构图卡
- 演化防过度 普通读书笔记卡
- 结构复杂性:组件数量增加带来的三重代价 结构图卡
- 逻辑复杂性:功能堆砌与复杂算法两种典型形态 普通读书笔记卡
- 演化原则:软件架构的主题是变化,而非建筑式的永恒 结构图卡
09 架构设计原则案例
- 原则互相制衡 普通读书笔记卡
09 淘宝技术发展
- 淘宝技术演进案例:从"买"到"重构"再到"自研"的原则转换逻辑 普通读书笔记卡
09 QQ 1.4 亿在线背后的故事
- 手机QQ按用户规模倒逼架构升级:从渐进重构到亿级推倒重来 普通读书笔记卡
10 架构设计流程:识别复杂度
- 排查复杂度 普通读书笔记卡
- 识别复杂度是架构设计第一步:判断错了方向,越努力错得越离谱 普通读书笔记卡
- 排查法识别复杂度:用峰值TPS/QPS估算与后果严重性代替直觉判断 普通读书笔记卡
11 架构设计流程:设计备选方案
- 备选要有差异 普通读书笔记卡
- 设计备选方案阶段的三种常见错误 结构图卡
- 成熟技术组合 普通读书笔记卡
- 备选方案设计的三条实操准则 普通读书笔记卡
- 前浪微博消息队列三个备选方案对比 结构图卡
12 架构设计流程:评估和选择备选方案
- 质量属性优先 普通读书笔记卡
- 四种常见的方案挑选思路及其共同缺陷 结构图卡
- 环评不是算分 普通读书笔记卡
- 360度环评法:评估质量属性时不追求过度预留 普通读书笔记卡
- 环评表列出后如何最终选择:按优先级而非数量或加权 结构图卡
- 前浪微博消息队列的最终决策:多方分歧与三原则逐一回应 普通读书笔记卡
13 架构设计流程:详细方案设计
- 细化可验证 普通读书笔记卡
- 详细方案设计阶段的技术选型是轻量级的:按适用场景匹配即可 结构图卡
- 详细设计阶段发现方案不可行的风险及三种预防手段 普通读书笔记卡
- 前浪微博消息队列详细设计:从粗粒度方案到可落地设计 普通读书笔记卡
14 高性能数据库集群:读写分离
- 读写分离代价 普通读书笔记卡
- 读写分离原理及"主从集群"与"主备集群"的本质区别 普通读书笔记卡
- 主从复制延迟带来的业务问题及三种应对方案 普通读书笔记卡
- 读写分离的分配机制:程序代码封装与中间件封装的权衡 结构图卡
15 高性能数据库集群:分库分表
- 分片先选维度 普通读书笔记卡
- 业务分库分散存储压力,但引入join、事务与成本三重代价 普通读书笔记卡
- 拆分牺牲关系 普通读书笔记卡
- 业务分库的适用时机:初创公司宜迟,大公司新业务宜早 结构图卡
- 分表的两种方式:垂直分表与水平分表的蛋糕类比 普通读书笔记卡
- 水平分表的路由算法:范围路由、Hash路由与配置路由的权衡 结构图卡
- 水平分表后join、count()与order by操作的应对方式 普通读书笔记卡
16 高性能NoSQL
- 模型匹配场景 普通读书笔记卡
- NoSQL的本质定位是针对关系数据库四大缺陷的补充方案 结构图卡
- 别迷信新库 普通读书笔记卡
- K-V存储(Redis):用数据结构服务器换取部分ACID 普通读书笔记卡
- 文档数据库(MongoDB):用no-schema换取灵活性,但丢失事务与join 普通读书笔记卡
- 行式存储与列式存储的优劣,本质取决于访问模式而非绝对优劣 结构图卡
- 全文搜索引擎的倒排索引原理与正排索引的本质区别 结构图卡
17 高性能缓存架构
- 缓存是风险层 普通读书笔记卡
- 缓存穿透:两种成因及应对 结构图卡
- 缓存雪崩的连锁反应机制及更新锁与后台更新两种方案 结构图卡
- 缓存热点:用多副本分散压力,且过期时间要错峰随机化 普通读书笔记卡
18 单服务器高性能模式:PPC与TPC
- 进程线程取舍 普通读书笔记卡
- 架构设计决定性能上限,实现细节决定性能下限 普通读书笔记卡
- PPC与prefork:每连接一进程模型的三大瓶颈 结构图卡
- TPC与prethread:每连接一线程解决旧问题,又引入新问题 结构图卡
19 单服务器高性能模式:Reactor与Proactor
- 事件驱动分工 普通读书笔记卡
- I/O多路复用的由来:从资源池到事件通知机制 普通读书笔记卡
- 异步依赖内核 普通读书笔记卡
- 单Reactor单进程与单Reactor多线程的取舍 结构图卡
- 多Reactor多进程/线程:职责分离反而让实现更简单 结构图卡
- Proactor:真正异步I/O与Reactor的本质区别及Linux下的现实落差 普通读书笔记卡
20 高性能负载均衡:分类及架构
- 负载均衡分层 普通读书笔记卡
- 高性能集群的本质是任务分配,"负载均衡"这个术语存在误导性 普通读书笔记卡
- 三种负载均衡机制:DNS、硬件与软件的取舍 结构图卡
- 三层负载均衡组合架构:地理/集群/机器级各司其职 结构图卡
21 高性能负载均衡:算法
- 算法匹配状态 普通读书笔记卡
- 负载均衡算法四大类,及轮询/加权轮询的双刃剑特性 普通读书笔记卡
- 负载最低优先与性能最优类:靠感知服务器状态换取分配精度,但代价高昂 结构图卡
- Hash类负载均衡:用源地址Hash与ID Hash实现会话保持 普通读书笔记卡
22 想成为架构师,你必须知道CAP理论
- 分区容忍必选 普通读书笔记卡
- CAP理论适用范围的精确化:互联且共享数据的读写系统 结构图卡
- CAP限定场景 普通读书笔记卡
- 一致性定义的精确化:从"节点同时可见"到"客户端读到最新写入" 普通读书笔记卡
- 可用性定义的精确化:合理响应不等于正确响应 普通读书笔记卡
- 分区容忍性定义的精确化:从work到function,从丢包到网络分区 普通读书笔记卡
- CAP应用:为何CA架构不存在,及CP与AP的具体区分 结构图卡
23 想成为架构师,你必须掌握的CAP细节
- 三选二是误读 普通读书笔记卡
23 CAP理论十二年回顾
- CAP关注的粒度是数据,而非整个系统 普通读书笔记卡
23 想成为架构师,你必须掌握的CAP细节
- 一致性有层级 普通读书笔记卡
- CAP忽略网络延迟,严苛数据实际只能CA,靠用户分区降低故障影响面 结构图卡
- 正常运行时不存在CP或AP的取舍,可以同时满足CA 普通读书笔记卡
- "牺牲"不等于什么都不做:分区期间记日志,为恢复后收敛做准备 普通读书笔记卡
- ACID与CAP的A和C:同名不同义的"关公战秦琼"式对比 普通读书笔记卡
- BASE理论是对CAP中AP方案的延伸补充 结构图卡
24 FMEA方法,排除架构可用性隐患的利器
- FMEA预演故障 普通读书笔记卡
- FMEA方法的定位:对已设计架构做事后可用性隐患排查 普通读书笔记卡
- 风险要可行动 普通读书笔记卡
- FMEA表核心字段的设计原则:功能点用户视角,故障模式只描述现象 结构图卡
- 单独拆出"故障原因"的价值,及风险程度=严重程度×故障概率 结构图卡
- 已有措施三层次,及规避与解决措施的优先级选择 结构图卡
25 高可用存储架构:双机架构
- 主备难在切换 普通读书笔记卡
- 存储高可用的四个分析维度,及主备复制的简单与代价 普通读书笔记卡
- 主从复制与主备的本质区别:从机要真正"干活" 普通读书笔记卡
- 双机切换的三个设计关键点,及复杂度暴涨一个量级的原因 普通读书笔记卡
- 双机切换三种架构:互连式、中介式与模拟式的取舍 结构图卡
- 主主复制看似简单实则有独特复杂性:哪些数据不能双向复制 普通读书笔记卡
26 高可用存储架构:集群和分区
- 集群提升容量 普通读书笔记卡
- 数据集中集群:规模扩大带来的三重复杂性,及ZooKeeper的应对 结构图卡
- 数据分散集群:数据分配算法的三设计点,及执行角色的两种实现路径 结构图卡
- 数据分区架构的产生背景:硬件故障级高可用应付不了地理级灾难 普通读书笔记卡
- 数据分区设计:数据量决定复杂度,及三种地理粒度分区规则 普通读书笔记卡
- 数据分区的复制规则三种模式:集中式、互备式与独立式 结构图卡
27 如何设计计算高可用架构?
- 计算尽量无状态 普通读书笔记卡
- 计算高可用的两个关键设计点,及"任务分配器"是逻辑概念 普通读书笔记卡
- 计算高可用主备架构:冷备与温备的取舍,及人工操作的代价 普通读书笔记卡
- 计算高可用主从架构:从机真正执行任务,但任务分配更复杂 普通读书笔记卡
- 负载均衡集群:任务分配策略与状态检测两个设计关键点 普通读书笔记卡
- 非对称集群:角色分工与重新分配,及相比负载均衡集群多出的两层复杂度 结构图卡
28 业务高可用的保障:异地多活架构
- 多活服务业务 普通读书笔记卡
- 异地多活的判断标准,及并非所有业务都值得做的代价权衡 普通读书笔记卡
- 多活先分等级 普通读书笔记卡
- 同城异区:应对机房级故障的最优架构,及其边界 普通读书笔记卡
- 跨城异地:网络延迟质变,逼出"按数据类型分类应对"的设计逻辑 结构图卡
- 跨国异地:延迟量级已改变"多活"的含义,真正落地只有两种场景 普通读书笔记卡
29 异地多活设计4大技巧
- 同城异地取舍 普通读书笔记卡
- 技巧1:保证核心业务的异地多活,而非所有业务 普通读书笔记卡
- 数据同步分级 普通读书笔记卡
- 技巧2:保证核心数据最终一致性,而非追求实时全量同步 结构图卡
- 技巧3:采用多种手段同步数据,而非只依赖存储系统自带同步 结构图卡
- 技巧4:只保证绝大部分用户的异地多活,及银行"转账申请"式设计 结构图卡
30 异地多活设计4步走
- 多活四步法 普通读书笔记卡
- 第1步:业务分级三条标准,及标准冲突时如何取舍 普通读书笔记卡
- 第2步:数据分类的五个特征维度,决定同步方案的设计空间 结构图卡
- 第3步:数据同步三种方案——存储系统同步、消息队列同步与重复生成 结构图卡
- 第4步:异常处理四类措施——多通道同步、同步访问结合、日志记录与用户补偿 结构图卡
31 如何应对接口级的故障?
- 接口故障隔离 普通读书笔记卡
- 接口级故障的特征与成因,及应对的共通思想 普通读书笔记卡
- 降级:丢车保帅的核心思想,及两种实现方式的取舍 普通读书笔记卡
- 熔断与降级的本质区别:应对自身故障,还是依赖方故障 普通读书笔记卡
- 限流:基于请求限流与基于资源限流的对比,及阈值确定难点 结构图卡
- 排队是限流的变种,及独立系统实现的必要性 结构图卡
32 可扩展架构的基本思想和模式
- 扩展本质隔离 普通读书笔记卡
- 可扩展的基本思想是"拆",及三种拆分思路的范围关系 结构图卡
- 为何必须靠拆分,而非只靠"写好代码":强制约束出错范围 普通读书笔记卡
- 三种拆分方式对应的典型架构,及可组合使用 结构图卡
33 传统的可扩展架构模式:分层架构和SOA
- 分层稳定依赖 普通读书笔记卡
- 分层架构的三种划分维度:C/S-B/S、MVC-MVP、逻辑分层架构 结构图卡
- SOA重在服务边界 普通读书笔记卡
- 分层架构支撑扩展靠"隔离关注点",但前提是层间依赖必须稳定 普通读书笔记卡
- 分层结构层层传递的约束:用冗余和轻微性能代价换取低复杂度 普通读书笔记卡
- SOA的诞生背景,及三个关键概念:服务、ESB与松耦合 结构图卡
- SOA是企业级架构理念而非单系统架构,及ESB的复杂性代价 普通读书笔记卡
34 深入理解微服务架构:银弹 or 焦油坑?
- 微服务非银弹 普通读书笔记卡
- 微服务与SOA的四维度对比:本质是两种不同理念,仅在"服务"上交集 结构图卡
- 拆分要有收益 普通读书笔记卡
- 微服务陷阱一:服务划分过细,把系统内复杂度转移为系统间复杂度 普通读书笔记卡
- 微服务陷阱二:"微"字迷思导致团队规模与服务数量不匹配 普通读书笔记卡
- 微服务陷阱三:调用链变长带来的性能损耗与故障定位困难 结构图卡
- 微服务陷阱四:缺乏自动化与服务治理时,"轻量级"最终演变成新的ESB 结构图卡
35 微服务架构最佳实践 - 方法篇
- 粒度随业务演进 普通读书笔记卡
- "三个火枪手"原则:微服务粒度应按团队规模而非业务边界确定 普通读书笔记卡
- 微服务拆分方法四种维度(可组合):业务逻辑、可扩展、可靠性、性能 结构图卡
- 微服务基础设施是把ESB的复杂度转移而非消除,及搭建的四层优先级 结构图卡
36 微服务架构最佳实践 - 基础设施篇
- 基建先于拆分 普通读书笔记卡
- 自动化测试与自动化部署:应对接口数量与部署频率的双重剧增 普通读书笔记卡
- 配置中心与接口框架:统一管理,避免把ESB的活转嫁给每个微服务 普通读书笔记卡
- API网关:统一外部访问入口,屏蔽内部边界并消除安全权限重复实现 普通读书笔记卡
- 服务发现的两种实现方式:自理式与代理式的风险取舍 结构图卡
- 服务路由、容错、监控、跟踪与安全的核心功能与实现要点 结构图卡
37 微内核架构详解
- 微内核稳核心 普通读书笔记卡
- 微内核架构的三个设计关键点:插件管理、连接与通信 结构图卡
- 插件隔离变化 普通读书笔记卡
- OSGi三层架构对微内核三设计点的具体落地 结构图卡
- 规则引擎应对海量组合规则的三个理由,及对微内核三设计点的映射 结构图卡
38 架构师应该如何判断技术演进的方向?
- 演进看矛盾 普通读书笔记卡
- 三种技术判断派别的价值观及各自的局限:潮流派、保守派、跟风派 结构图卡
- 技术演进的动力:产品类靠技术推动业务,服务类靠业务推动技术 结构图卡
- 技术演进的模式:基于业务发展阶段判断当前主要复杂度 普通读书笔记卡
39 互联网技术演进的模式
- 模式来自阶段 普通读书笔记卡
- 初创期:业务重创新轻完善,技术唯一要求是"快" 普通读书笔记卡
- 优化期"优化派"与"架构派"之争,及架构期"拆"字诀的三个方向 结构图卡
- 竞争期系统数量质变的两个问题,及平台化、服务化应对 结构图卡
- 成熟期转向求精,及用户规模维度的量变到质变逻辑 结构图卡
40 互联网架构模板:“存储层”技术
- 存储按特征分层 普通读书笔记卡
40 互联网架构模板:"存储层"技术
40 互联网架构模板:“存储层”技术
- 数据入口要治理 普通读书笔记卡
40 互联网架构模板:"存储层"技术
- NoSQL存储平台:节点数上千后才真正划算的三大功能 普通读书笔记卡
- 小文件存储与大文件存储的差异化定位 结构图卡
41 互联网架构模板:“开发层”和“服务层”技术
- 服务层沉淀能力 普通读书笔记卡
41 互联网架构模板:"开发层"和"服务层"技术
- 统一开发框架的三个理由,及"优选成熟框架"的选型原则 普通读书笔记卡
- Web服务器的"拿来主义",及Docker容器带来的两大根本性变革 普通读书笔记卡
- 配置中心:系统数量增多后集中管理配置的四个好处 普通读书笔记卡
- 服务中心的两种实现方式:服务名字系统与服务总线系统 结构图卡
- 消息队列:解决蜘蛛网式异步通知问题,带来的五个好处 结构图卡
42 互联网架构模板:“网络层”技术
- 网络入口控风险 普通读书笔记卡
42 互联网架构模板:"网络层"技术
- HTTP-DNS:灵活可控及时的代价是高开发成本与侵入性 普通读书笔记卡
- 吞吐量足够大时,硬件负载均衡反而比软件更省钱 普通读书笔记卡
- CDN:以"空间换时间"解决最后一公里,买而不造 普通读书笔记卡
- 多中心是质变而非量变:数据一致性/事务性无通用解法 结构图卡
43 互联网架构模板:“用户层”和“业务层”技术
- 用户业务分离 普通读书笔记卡
43 互联网架构模板:"用户层"和"业务层"技术
- 用户管理:数据量大但不难实现,关键是用户间无强关联 普通读书笔记卡
- Android推送五花八门的根源:GCM缺失与厂商定制 普通读书笔记卡
- 存储云与图片云:同技术却拆两个系统的真正原因 普通读书笔记卡
- 虚拟业务域:分久必合,用网关Facade收编子系统爆炸 结构图卡
44 互联网架构模板:“平台”技术
- 平台沉淀共性 普通读书笔记卡
44 互联网架构模板:"平台"技术
- 运维平台:四大职责与"四化"设计要素 结构图卡
- 系统无法自行满足运维标准时,用中间层做规范适配 普通读书笔记卡
- 可视化的本质:仪表盘式的信息压缩 普通读书笔记卡
- 测试平台四模块:任务管理是串联自动化的核心 结构图卡
- 数据平台三大职责,与数据价值的"规模门槛" 结构图卡
- 管理平台:权限管理拆为身份认证与权限控制两部分 普通读书笔记卡
45 架构重构内功心法第一式:有的放矢
- 重构先定靶 普通读书笔记卡
- 架构重构比全新设计难在三点 结构图卡
- 有的放矢:从纷繁问题中识别核心,而非试图解决所有问题 普通读书笔记卡
- 判断重构还是优化:从0设计一遍,看新旧架构差异 普通读书笔记卡
- 三个重构案例:同为"可扩展性差",却是不同根因 结构图卡
46 架构重构内功心法第二式:合纵连横
- 沟通转换语言 普通读书笔记卡
- 合纵:把技术语言翻译成人话,用事实数据说话 普通读书笔记卡
- 合作要双赢 普通读书笔记卡
- 连横:两大阻力,用"换位思考"与"明确时间点"应对 结构图卡
- C系统案例:对方"也深受其苦",是打破僵局的关键 普通读书笔记卡
47 架构重构内功心法第三式:运筹帷幄
- 分段实施 普通读书笔记卡
- 逐个解决问题的三大缺陷,催生"分段实施"的必要性 普通读书笔记卡
- X系统与S系统的三阶段分段实施策略对比 结构图卡
- 分段实施四步法:优先级排序、问题分类、先易后难、循序渐进 结构图卡
- 先易后难:反直觉却更优的三个理由 普通读书笔记卡
48 再谈开源项目:如何选择、使用以及二次开发?
- 开源先看适配 普通读书笔记卡
- 选开源项目:聚焦是否满足业务,而非项目是否优秀 普通读书笔记卡
- 保持原项目纯洁 普通读书笔记卡
- 选开源项目:聚焦是否成熟,三个考察维度 普通读书笔记卡
- 选开源项目:聚焦运维能力,而非只看技术指标 普通读书笔记卡
- 用开源项目:拒绝"拿来主义",深入研究、仔细测试 普通读书笔记卡
- 用开源项目:再深入的研究测试,也替代不了灰度 普通读书笔记卡
- 用开源项目:重要存储必须有另一套成熟方案做备份 普通读书笔记卡
- 改开源项目:保持原系统纯洁,只开发辅助系统"包装"它 普通读书笔记卡
- 发明你要的轮子:没有完全适合你的开源轮子 普通读书笔记卡
49 谈谈App架构的演进
- 端架构随场景变 普通读书笔记卡
- App架构五阶段演进:复杂度驱动与架构原则的对应 结构图卡
- App的"拆"与后端微服务的"拆":两个本质区别 普通读书笔记卡
- 组件化与容器化的核心区别:静态发布与动态发布 普通读书笔记卡
- 跨平台方案仍不成熟:Airbnb放弃React Native的信号 普通读书笔记卡
50 架构实战:架构设计文档模板
- 文档记录决策 普通读书笔记卡
- 备选方案文档的需求分析框架:5W + 1H + 8C 结构图卡
- 复杂度定量分析法:从业务量倒推性能目标 普通读书笔记卡
- 架构设计文档的完整结构:总体方案到演进规划 结构图卡
- 高可用设计:要写清楚"哪里会丢",而非假装100%可靠 普通读书笔记卡
- 不涉及的设计点也要明确写"无",而非留空 普通读书笔记卡
相关主题
暂无公开主题。