本书分为四个部分,每部分内容都由一个研究案例引出。第一部分介绍了如何保证系统的生存,即维护系统正常运行。第二部分介绍了如何衡量系统的容量,以及如何随时间来优化系统的容量。在第三部分讲述了架构师在为数据中心构建软件时应该思考的一般设计问题。第四部分讨论了系统的运行寿命,将其作为整个信息生态环境的一部分。书中代码采用的Java语言,熟悉编程的人都能轻易阅读。作者从Java和Unix的视角看问题,因而本书的焦点比较中立,着眼于跨所有平台的技术和概念。在每种模式和反模式的末尾,都有一段简短精要的总结。
本书适合面向企业级软件的架构师、设计师和开发人员阅读参考。
......(更多)
Michael T.Nygard
从业二十余年的资深程序员、架构师,被誉为在线业务的“流动解决问题专家”。先后为美国政府、军队、银行、金融、农业和零售等多个行业交付过运营系统,这种实际运营的经历改变了他对软件架构和开发的看法,也让他对在相当不友好的环境下构建高性能、高可靠性的软件有了独特的见解。他写过多篇文章和社论,是软件架构经典著作《架构之美》作者之一。
......(更多)
第1章 引言 1
1.1 瞄准正确的目标 1
1.2 使用决断力 2
1.3 生活的质量 3
1.4 挑战的范围 3
1.5 随手一松就是一百万 3
1.6 务实的架构 4
第一部分 稳定性
第2章 案例研究:航空系统宕机的异常 8
2.1 事故 9
2.2 结果 12
2.3 事后调查 12
2.4 确凿的证据 15
2.5 一点预防 17
第3章 稳定性概述 19
3.1 定义稳定性 20
3.2 故障模式 22
3.3 裂痕扩散 22
3.4 故障链 23
3.5 模式与反模式 24
第4章 稳定性反模式 26
4.1 集成点 27
4.2 连锁反应 37
4.3 连锁故障 40
4.4 用户 42
4.5 阻塞的线程 50
4.6 自我否定攻击 55
4.7 尺度效应 57
4.8 不平衡的容量 60
4.9 慢响应 63
4.10 SLA倒置 64
4.11 无边界结果集 67
第5章 稳定性模式 70
5.1 使用超时 70
5.2 断路器 73
5.3 隔板 75
5.4 稳定状态 78
5.5 快速失效 83
5.6 握手 85
5.7 测试装置 87
5.8 去耦合中间件 90
第6章 稳定性总结 93
第二部分 容量
第7章 案例研究:被客户压迫 96
7.1 发布倒计时 96
7.2 瞄准QA 97
7.3 负载测试 99
7.4 被大量会话所杀 101
7.5 测试的鸿沟 102
7.6 后果 103
第8章 容量概述 105
8.1 定义容量 105
8.2 约束 106
8.3 关联 107
8.4 可扩展性 107
8.5 容量的神话 108
8.6 总结 114
第9章 容量反模式 115
9.1 资源池竞争 115
9.2 泛滥的JSP碎片 118
9.3 AJAX过度之伤 119
9.4 驻留过久的会话 121
9.5 HTML中浪费的空间 122
9.6 刷新按钮 125
9.7 手工的SQL语句 126
9.8 数据库富营养化 128
9.9 集成点延迟 130
9.10 Cookie怪兽 131
9.11 总结 133
第10章 容量模式 134
10.1 连接池 134
10.2 谨慎使用缓存 136
10.3 预计算容量 137
10.4 调整垃圾回收器 140
10.5 总结 142
第三部分 一般设计问题
第11章 网络连接 144
11.1 多宿主服务器 144
11.2 路由 146
11.3 虚拟IP地址 146
第12章 安全 149
12.1 最少特权原则 149
12.2 配置的密码 150
第13章 可用性 151
13.1 收集可用性需求 151
13.2 记录可用性需求 152
13.3 负载均衡 153
13.4 集群 157
第14章 管理 159
14.1 “测试和产品匹配吗?” 159
14.2 配置文件 161
14.3 启动和关闭 163
14.4 管理接口 164
第15 章 设计总结. 165
第四部分 运营
第16章 案例研究:惊人的宇宙 168
16.1 旺季 168
16.2 婴儿的第一个圣诞 169
16.3 切脉 169
16.4 感恩节 170
16.5 黑色星期五 170
16.6 重要的信号 172
16.7 诊断测试 172
16.8 专家打来电话 173
16.9 比较解救方案 174
16.10 条件是否会响应处理 175
16.11 收尾 176
第17章 透明度 177
17.1 视角 178
17.2 透明度设计 184
17.3 使用各种技术 184
17.4 日志 185
17.5 监控系统 190
17.6 法律上及事实上的标准 194
17.7 操作数据库 201
17.8 支持流程 205
17.9 总结 208
第18章 适应 209
18.1 与时俱进 209
18.2 适应性的软件设计 210
18.3 适应性的企业架构 215
18.4 发布应无害 220
18.5 总结 224
参考书目 226
......(更多)
生物学上,平方立方定律告诉我们为什么没见过大象一般大的蜘蛛。昆虫的重量和它的体积成比例,因此是O(N^3)。腿的长度和表面积成比例,因此是 O(N^2)。如果你让小动物十倍大,这会让强度重量比变为 1/10,那么腿就不能支撑它了。
......(更多)