Robin的主页

目录来自:大型网站技术架构

第1篇 概述

1 大型网站架构演化 2

  • 1.1 大型网站软件系统的特点 3
  • 1.2 大型网站架构演化发展历程 4
  • 1.2.1 初始阶段的网站架构 4
  • 1.2.2 应用服务和数据服务分离 4
  • 1.2.3 使用缓存改善网站性能 5
  • 1.2.4 使用应用服务器集群改善网站的并发处理能力 6
  • 1.2.5 数据库读写分离 7
  • 1.2.6 使用反向代理和CDN加速网站响应 8
  • 1.2.7 使用分布式文件系统和分布式数据库系统 9
  • 1.2.8 使用NoSQL和搜索引擎 10
  • 1.2.9 业务拆分 11
  • 1.2.10 分布式服务 11
  • 1.3 大型网站架构演化的价值观 13
  • 1.3.1 大型网站架构技术的核心价值是随网站所需灵活应对 13
  • 1.3.2 驱动大型网站技术发展的主要力量是网站的业务发展 13
  • 1.4 网站架构设计误区 14
  • 1.4.1 一味追随大公司的解决方案 14
  • 1.4.2 为了技术而技术 14
  • 1.4.3 企图用技术解决所有问题 14
  • 1.5 小结 15

2 大型网站架构模式 16

  • 2.1 网站架构模式 16
  • 2.1.1 分层 17
  • 2.1.2 分割 18
  • 2.1.3 分布式 18
  • 2.1.4 集群 19
  • 2.1.5 缓存 20
  • 2.1.6 异步 20
  • 2.1.7 冗余 21
  • 2.1.8 自动化 22
  • 2.1.9 安全 23
  • 2.2 架构模式在新浪微博的应用 23
  • 2.3 小结 25

3 大型网站核心架构要素 26

  • 3.1 性能 27
  • 3.2 可用性 28
  • 3.3 伸缩性 29
  • 3.4 扩展性 30
  • 3.5 安全性 30
  • 3.6 小结 31

第2篇 架构

4 瞬时响应:网站的高性能架构 34

  • 4.1 网站性能测试 35
  • 4.1.1 不同视角下的网站性能 35
  • 4.1.2 性能测试指标 36
  • 4.1.3 性能测试方法 39
  • 4.1.4 性能测试报告 41
  • 4.1.5 性能优化策略 41
  • 4.2 Web前端性能优化 42
  • 4.2.1 浏览器访问优化 42
  • 4.2.2 CDN加速 43
  • 4.2.3 反向代理 44
  • 4.3 应用服务器性能优化 45
  • 4.3.1 分布式缓存 45
  • 4.3.2 异步操作 52
  • 4.3.3 使用集群 53
  • 4.3.4 代码优化 54
  • 4.4 存储性能优化 58
  • 4.4.1 机械硬盘vs. 固态硬盘 58
  • 4.4.2 B+树vs. LSM树 59
  • 4.4.3 RAID vs. HDFS 61
  • 4.5 小结 64

5 万无一失:网站的高可用架构 66

  • 5.1 网站可用性的度量与考核 67
  • 5.1.1 网站可用性度量 67
  • 5.1.2 网站可用性考核 67
  • 5.2 高可用的网站架构 69
  • 5.3 高可用的应用 71
  • 5.3.1 通过负载均衡进行无状态服务的失效转移 72
  • 5.3.2 应用服务器集群的Session管理 73
  • 5.4 高可用的服务 76
  • 5.5 高可用的数据 78
  • 5.5.1 CAP原理 79
  • 5.5.2 数据备份 82
  • 5.5.3 失效转移 84
  • 5.6 高可用网站的软件质量保证 85
  • 5.6.1 网站发布 85
  • 5.6.2 自动化测试 86
  • 5.6.3 预发布验证 87
  • 5.6.4 代码控制 88
  • 5.6.5 自动化发布 90
  • 5.6.6 灰度发布 91
  • 5.7 网站运行监控 91
  • 5.7.1 监控数据采集 92
  • 5.7.2 监控管理 93
  • 5.8 小结 94

6 永无止境:网站的伸缩性架构 95

  • 6.1 网站架构的伸缩性设计 97
  • 6.1.1 不同功能进行物理分离实现伸缩 97
  • 6.1.2 单一功能通过集群规模实现伸缩 98
  • 6.2 应用服务器集群的伸缩性设计 99
  • 6.2.1 HTTP重定向负载均衡 100
  • 6.2.2 DNS域名解析负载均衡 101
  • 6.2.3 反向代理负载均衡 102
  • 6.2.4 IP负载均衡 103
  • 6.2.5 数据链路层负载均衡 104
  • 6.2.6 负载均衡算法 105
  • 6.3 分布式缓存集群的伸缩性设计 106
  • 6.3.1 Memcached分布式缓存集群的访问模型 107
  • 6.3.2 Memcached分布式缓存集群的伸缩性挑战 107
  • 6.3.3 分布式缓存的一致性Hash算法 109
  • 6.4 数据存储服务器集群的伸缩性设计 112
  • 6.4.1 关系数据库集群的伸缩性设计 113
  • 6.4.2 NoSQL数据库的伸缩性设计 117
  • 6.5 小结 119

7 随需应变:网站的可扩展架构 121

  • 7.1 构建可扩展的网站架构 122
  • 7.2 利用分布式消息队列降低系统耦合性 123
  • 7.2.1 事件驱动架构 123
  • 7.2.2 分布式消息队列 124
  • 7.3 利用分布式服务打造可复用的业务平台 126
  • 7.3.1 Web Service与企业级分布式服务 128
  • 7.3.2 大型网站分布式服务的需求与特点 129
  • 7.3.3 分布式服务框架设计 130
  • 7.4 可扩展的数据结构 131
  • 7.5 利用开放平台建设网站生态圈 132
  • 7.6 小结 134

8 固若金汤:网站的安全架构 135

  • 8.1 道高一尺魔高一丈的网站应用攻击与防御 136
  • 8.1.1 XSS攻击 136
  • 8.1.2 注入攻击 138
  • 8.1.3 CSRF攻击 139
  • 8.1.4 其他攻击和漏洞 140
  • 8.1.5 Web应用防火墙 141
  • 8.1.6 网站安全漏洞扫描 142
  • 8.2 信息加密技术及密钥安全管理 142
  • 8.2.1 单向散列加密 143
  • 8.2.2 对称加密 144
  • 8.2.3 非对称加密 144
  • 8.2.4 密钥安全管理 145
  • 8.3 信息过滤与反垃圾 146
  • 8.3.1 文本匹配 147
  • 8.3.2 分类算法 148
  • 8.3.3 黑名单 149
  • 8.4 电子商务风险控制 150
  • 8.4.1 风险 151
  • 8.4.2 风控 151
  • 8.5 小结 153

第3篇 案例

9 淘宝网的架构演化案例分析 156

  • 9.1 淘宝网的业务发展历程 157
  • 9.2 淘宝网技术架构演化 158
  • 9.3 小结 162

10 维基百科的高性能架构设计分析 163

  • 10.1 Wikipedia网站整体架构 163
  • 10.2 Wikipedia性能优化策略 165
  • 10.2.1 Wikipedia前端性能优化 165
  • 10.2.2 Wikipedia服务端性能优化 166
  • 10.2.3 Wikipedia后端性能优化 167

11 海量分布式存储系统Doris的高可用架构设计分析 169

  • 11.1 分布式存储系统的高可用架构 170
  • 11.2 不同故障情况下的高可用解决方案 171
  • 11.2.1 分布式存储系统的故障分类 172
  • 11.2.2 正常情况下系统访问结构 172
  • 11.2.3 瞬时故障的高可用解决方案 173
  • 11.2.4 临时故障的高可用解决方案 174
  • 11.2.5 永久故障的高可用解决方案 175

12 网购秒杀系统架构设计案例分析 176

  • 12.1 秒杀活动的技术挑战 177
  • 12.2 秒杀系统的应对策略 177
  • 12.3 秒杀系统架构设计 178
  • 12.4 小结 182
  • 13 大型网站典型故障案例分析 183
  • 13.1 写日志也会引发故障 184
  • 13.2 高并发访问数据库引发的故障 184
  • 13.3 高并发情况下锁引发的故障 185
  • 13.4 缓存引发的故障 185
  • 13.5 应用启动不同步引发的故障 186
  • 13.6 大文件读写独占磁盘引发的故障 186
  • 13.7 滥用生产环境引发的故障 187
  • 13.8 不规范的流程引发的故障 187
  • 13.9 不好的编程习惯引发的故障 188
  • 13.10 小结 188

第4篇 架构师

14 架构师领导艺术 190

  • 14.1 关注人而不是产品 191
  • 14.2 发掘人的优秀 191
  • 14.3 共享美好蓝图 192
  • 14.4 共同参与架构 193
  • 14.5 学会妥协 194
  • 14.6 成就他人 194

15 网站架构师职场攻略 196

  • 15.1 发现问题,寻找突破 197
  • 15.2 提出问题,寻求支持 199
  • 15.3 解决问题,达成绩效 201

16 漫话网站架构师 203

  • 16.1 按作用划分架构师 203
  • 16.2 按效果划分架构师 204
  • 16.3 按职责角色划分架构师 205
  • 16.4 按关注层次划分架构师 205
  • 16.5 按口碑划分架构师 206
  • 16.6 非主流方式划分架构师 207
- - - - - -
written by 陈烨彬 Robin Chen , and published under (CC) BY-NC-SA.