目 录
1 核心概念 1
什么是伸缩性 ................................................................................................ 2
从单一服务器到全球用户的Web 架构演化 ............................................... 4
单一服务器 ............................................................................................ 5
使用更强的服务器:垂直伸缩 ............................................................ 6
服务分离 .............................................................................................. 10
内容分发网络:静态内容的伸缩性 .................................................. 12
分散访问流量:水平伸缩 .................................................................. 13
服务全球用户的伸缩性架构 .............................................................. 16
数据中心基础设施架构概览 ...................................................................... 18
前端 ...................................................................................................... 19
Web 应用层 .......................................................................................... 20
Web 服务层 .......................................................................................... 20
附加组件 .............................................................................................. 21
数据持久层 .......................................................................................... 21
数据中心基础架构 .............................................................................. 22
应用架构概览 .............................................................................................. 23
前端 ...................................................................................................... 24
Web 服务 .............................................................................................. 25
支撑技术 .............................................................................................. 29
小结 .............................................................................................................. 30
2 软件设计原则 31
简单 .............................................................................................................. 31
隐藏复杂与构建抽象 .......................................................................... 32
避免过度设计 ...................................................................................... 33
尝试测试驱动开发 .............................................................................. 34
从软件设计的简化范例中学习 .......................................................... 35
低耦合 .......................................................................................................... 36
促进低耦合 .......................................................................................... 37
避免不必要的耦合 .............................................................................. 39
低耦合范式 .......................................................................................... 40
不要重复自己(DRY) .............................................................................. 41
复制粘贴代码 ...................................................................................... 42
基于约定编程 .............................................................................................. 43
画架构图 ...................................................................................................... 46
用例图 .................................................................................................. 49
类图 ...................................................................................................... 50
模块图 .................................................................................................. 51
单一职责 ...................................................................................................... 52
改善单一职责 ...................................................................................... 52
单一职责的例子 .................................................................................. 53
开闭原则 ...................................................................................................... 53
依赖注入 ...................................................................................................... 55
控制反转(IOC) .............