《大型网站技术架构 - 核心原理与案例分析》 目录
🌙
手机阅读
本文目录结构
本章目录
第 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
- 附录 A 大型网站架构技术一览 208
- 附录 B Web 开发技术发展历程 215
- 后记 218