高性能架构之道:分布式、并发编程、数据库调优、缓存设计、IO模型、前端优化、高可用
定 价:89 元
- 作者:易哥
- 出版时间:2021/3/1
- ISBN:9787121404870
- 出 版 社:电子工业出版社
- 中图法分类:TP311.1
- 页码:292
- 纸张:
- 版次:01
- 开本:16开
本书是一本理论联系实际的软件架构设计指导书,旨在帮助读者完成高性能软件系统的架构设计工作。书中涉及分布式、并发编程、数据库调优、缓存、IO、前端性能优化等方面的理论知识,并在理论知识的基础上推导其实践技巧。本书最后还运用书中知识完成了一个实际软件项目的架构设计工作。本书适合软件架构师、工程师、学生阅读,以帮助其完善软件开发知识体系和提升其软件架构设计能力。
易哥(笔名),毕业于浙江大学、山东大学,高级软件系统架构师、网络工程师、数据库工程师、软件测试工程师、注册电气工程师。在校成绩前1%,获得国家奖学金两次,一等奖学金四次,科技创新大赛一等奖三次,以及五四青年科学奖等。主要科研方向为机器学习、分布式算法、容错算法在无线传感网络中的应用,相关论文获得IEEE通信协会最佳论文奖。曾担任网站技术部门负责人,具有丰富的互联网开发经验。先后设计和实现了众多系统和平台,也是活跃的开源开发者。现专注软件系统架构设计与后端开发,著有书籍《通用源码阅读指导书》《高性能架构之道》等。
第1章 高性能架构 001
1.1 软件架构 001
1.2 软件的质量 003
1.3 高性能概述 004
1.4 软件性能指标 005
1.4.1 吞吐量 006
1.4.2 并发数 006
1.4.3 平均响应时间 007
1.4.4 可靠性指标 008
1.5 性能指标之间的关系 009
1.5.1 并发数对吞吐量的影响 009
1.5.2 并发数对平均响应时间的影响 011
1.5.3 平均响应时间对并发数的影响 012
1.5.4 可靠性指标与其他指标的关系 013
1.6 高性能架构总结 013
第2章 分流设计 014
2.1 内容分发网络 014
2.1.1 内容分发网络的结构 015
2.1.2 内容分发网络的原理 017
2.2 多地址直连 019
2.3 反向代理 021
第3章 服务并行设计 026
3.1 并行与并发 026
3.2 集群系统 028
3.2.1 无状态的节点集群 028
3.2.2 单一服务节点集群 029
3.2.3 信息共享的节点集群 031
3.2.4 信息一致的节点集群 032
3.3 分布式系统 034
3.4 微服务系统 036
第4章 运算并发 038
4.1 多进程 038
4.2 多线程 039
4.2.1 线程的状态及转换 039
4.2.2 多线程的应用场景 041
4.2.3 多线程的创建 042
4.2.4 线程池 046
4.2.5 多线程资源协作 050
4.2.6 多线程进度协作 056
4.3 多协程 069
4.4 运算并发总结 072
第5章 输入输出设计 074
5.1 概念梳理 074
5.1.1 同步与异步 074
5.1.2 阻塞与非阻塞 075
5.2 IO模型 077
5.3 IO模型的层级关系 078
5.4 阻塞式IO模型 079
5.5 非阻塞式IO模型 081
5.6 信号驱动式IO模型 082
5.7 复用式IO模型 083
5.8 异步式IO模型 086
5.9 输入输出模型总结 088
第6章 数据库设计与优化 090
6.1 数据库设计概述 090
6.2 关系型数据库设计 091
6.2.1 设计范式介绍 093
6.2.2 反范式设计 101
6.3 索引原理与优化 102
6.3.1 索引的原理 103
6.3.2 索引生效分析 107
6.3.3 索引的使用 109
6.3.4 索引的利弊 116
6.4 数据库引擎 116
6.5 数据库锁 117
6.5.1 乐观锁 118
6.5.2 悲观锁 119
6.6 死锁 120
6.7 事务 122
6.7.1 事务并发导致的问题 123
6.7.2 事务隔离级别 124
6.7.3 自建事务 126
6.8 巨量数据的优化 128
6.8.1 表分区 128
6.8.2 分库分表 132
6.8.3 读写分离 134
6.9 非传统数据库 138
6.9.1 内存数据库 139
6.9.2 列存储数据库 140
6.9.3 面向对象数据库 140
6.9.4 文档数据库 140
6.9.5 图数据库 141
6.10 数据库中间件 141
第7章 缓存设计 143
7.1 缓存的收益 143
7.2 缓存的键与值 145
7.2.1 缓存的键 145
7.2.2 缓存的值 149
7.3 缓存的更新机制 151
7.3.1 时效性更新机制 151
7.3.2 主动更新机制 152
7.4 缓存的清理机制 155
7.4.1 时效式清理 156
7.4.2 数目阈值式清理 157
7.4.3 非强引用式清理 161
7.4.4 清理策略使用实践 164
7.5 缓存的风险点 165
7.5.1 缓存穿透 165
7.5.2 缓存雪崩 166
7.5.3 缓存击穿 166
7.5.4 缓存预热 167
7.6 缓存的位置 168
7.6.1 客户端缓存 169
7.6.2 静态缓存 172
7.6.3 服务缓存 173
7.6.4 数据库缓存 173
7.7 写缓存 174
7.7.1 写缓存的收益问题 175
7.7.2 写缓存实践 175
第8章 可靠性设计 177
8.1 软件可靠性概述 177
8.2 软件可靠性指标 178
8.2.1 失效概率 178
8.2.2 失效强度 179
8.2.3 失效率 179
8.3 模块连接方式与可靠性 179
8.3.1 串联系统的可靠性 179
8.3.2 并联系统的可靠性 180
8.3.3 冗余系统的可靠性 180
8.3.4 模块连接方式的可靠性讨论 181
8.4 软件失效模型 181
8.5 可靠性设计 182
8.5.1 消除单点依赖 183
8.5.2 化串联为并联 183
8.5.3 采用集群 184
第9章 应用保护 185
9.1 应用保护概述 185
9.2 隔离 187
9.3 限流 189
9.3.1 时间窗限流法 189
9.3.2 漏桶限流法 190
9.3.3 令牌限流法 192
9.4 降级 193
9.5 熔断 196
9.6 恢复 198
第10章 前端高性能 200
10.1 前端工作分析 200
10.1.1 前端加载过程 200
10.1.2 前端性能分析 201
10.2 资源下载优化 203
10.2.1 资源压缩 203
10.2.2 减少请求 205
10.2.3 资源缓存 210
10.3 页面解析优化 214
10.3.1 顺应解析流程 214
10.3.2 应用新型前端框架 216
10.4 懒加载 216
10.5 预操作 217
第11章 架构设计理论 219
11.1 软件架构风格 219
11.1.1 管道过滤器架构风格 220
11.1.2 面向对象架构风格 220
11.1.3 基于组件的架构风格 221
11.1.4 事件驱动架构风格 221
11.1.5 分层架构风格 221
11.1.6 C/S架构风格 222
11.1.7 三层C/S架构风格 223
11.1.8 B/S架构风格 224
11.2 软件生命周期 225
11.2.1 需求阶段 226
11.2.2 模型设计 227
11.2.3 概要设计 228
11.2.4 详细设计 228
11.2.5 质量指标设计 229
11.2.6 方案预研 229
11.2.7 软件开发 229
第12章 高性能架构实践 231
12.1 需求概述 231
12.2 权限系统的相关理论 234
12.2.1 权限模型 234
12.2.2 访问控制方式 240
12.3 模型设计 241
12.3.1 模型调研 241
12.3.2 模型应用 242
12.4 概要设计 249
12.5 数据层详细设计 253
12.5.1 RBAC数据表的范式设计 253
12.5.2 RBAC数据表的反范式设计 254
12.5.3 RBAC数据表的最终设计 255
12.5.4 MatrixAuth管理类数据表设计 257
12.5.5 MatrixAuth的数据层结构 259
12.6 缓存详细设计 260
12.7 服务端详细设计 261
12.7.1 数据源动态切换 261
12.7.2 数据冗余的一致性保证 263
12.7.3 服务端的操作接口 263
12.8 客户端详细设计 265
12.8.1 可控角色的权限验证 265
12.8.2 自由角色的权限验证 267
12.8.3 用户信息、角色关联信息推送 268
12.9 MatrixAuth项目实践总结 268
12.9.1 MatrixAuth的高性能设计 268
12.9.2 需求完成度分析 270
12.9.3 MatrixAuth的使用简介 270
参考文献 273