《可伸缩架构(第2版):云环境下的高可用与风险管理》是一本关于现代化软件架构的书。书中介绍了如何构建和更新你的关键应用程序来满足日益苛刻的数字化客户的需求。书中还介绍了如何实现高可用性,如何使用现代化的开发和运维技术来架构应用程序,如何组织开发团队帮助应用程序和业务获得成功,如何将系统扩展到最大规模,以及如何利用云计算的可用资源来迎接上述挑战。本书的目标读者包括构建和管理大规模应用程序和系统的软件工程师、架构师、技术经理及总监。如果你管理着软件开发人员、系统可靠性工程师、DevOps 工程师,或者经营着一个拥有大规模应用程序和系统的机构,本书中所提供的建议和指导都能够帮助你,让你的系统运行得更加平稳和可靠。
......(更多)
张若飞,曾任多家互联网金融公司CTO,在宜人贷、雅虎北研、金山云等知名公司担任架构师。十余年互联网研发及技术管理经验,对搭建海量数据、大型分布式系统有丰富经验。著有十余本技术译著,包括《给大忙人看的JavaSE 8》《代码不朽:编写可维护软件的十大原则》《面向可伸缩架构》(第1版)《云原生Java》《Java持续交付》等书,总计500余万字。
......(更多)
序 xvii
前言 xx
第Ⅰ部分 原则 1 可用性 :维护现代化应用程序的可用性
第 1 章 理解、测量和提高可用性 2
可用性与可靠性 3
什么导致了低可用性 4
测量可用性 5
N 个 9 6
计划中的故障也依然是故障 6
通过数字来体现可用性 7
提高下降的可用性 7
测试并跟踪当前的可用性 8
将手动流程自动化 9
改进你的系统 12
时刻关注不断变化和发展中的应用程序的可用性 12
提高应用程序可用性的 5 个要点 12
要点 1 :时刻考虑应对故障 13
要点 2 :时刻考虑如何伸缩 14
要点 3 :缓和风险 15
要点 4 :监控可用性 17
要点 5 :以可预期及明确的方式来处理可用性问题 18
做好准备 19
第 2 章 两次失误的高度——预留从错误中恢复的空间 20
两次失误的高度 21
场景 1 :丢失一个节点 21
场景 2 :升级过程中出现的问题 24
场景 3 :数据中心恢复 25
场景 4 :隐蔽的共享故障类型 27
场景 5 :故障循环 28
管理你的应用程序 28
航天飞机 29
第Ⅱ部分 原则 2 现代化应用程序架构 :使用服务
第 3 章 使用服务 32
单体应用程序与面向服务的应用程序 32
所有权收益 34
规模收益 36
拆分服务 37
如何定义服务 37
深入了解服务 38
指导原则 1 :特定的业务需求 38
指导原则 2 :清晰和独立的团队所有权 39
指导原则 3 :天然隔离的数据 40
指导原则 4 :共享的能力 / 数据 41
多种原因 42
过犹不及 43
找到适当的平衡 44
第 4 章 服务和数据 45
无状态服务 — 没有数据的服务 45
有状态服务 — 有数据的服务 45
数据分区 46
及时处理增长的烦恼 49
第 5 章 处理服务故障 50
级联式的服务故障 50
如何响应服务故障 51
可预测的响应 52
可理解的响应 53
合理的响应 53
如何确定故障 54
适当的行为 56
优雅降级 56
优雅补偿 57
尽早失败 57
用户导致的问题 58
小结 59
第Ⅲ部分 原则 3 组织 :为现代化
应用程序建立可伸缩性的组织
第 6 章 服务所有权——STOSA 62
由独立团队负责的服务架构 62
STOSA 应用程序和组织的好处 64
“所有”一个服务意味着什么 64
使用核心团队和服务 67
小结 68
第 7 章 服务分级 69
应用程序的复杂性 69
什么是服务分级 70
为服务分配服务级别标签 71
示例 :在线商店 73
使用服务分级 75
期望 76
响应性 76
依赖 77
小结 78
第 8 章 服务等级协议 79
什么是服务等级协议 80
外部 SLA 与内部 SLA 的对比 82
内部 SLA 很重要 82
SLA 可以用于问题诊断 83
SLA 的性能检测方法 84
限定 SLA 85
排名 SLA 85
SLA 的条件 88
究竟应当定义多少内部 SLA,以及定义哪些内部 SLA 88
为什么内部 SLA 很重要 89
第Ⅳ部分 原则 4 风险 :现代化应用程序的风险管理
第 9 章 如何在设计可伸缩架构时使用风险管理 93
识别风险 93
消除最严重的风险 94
风险缓和 94
定期检查 95
对风险管理的总结 95
可能性与严重性 95
十佳列表 :低可能性,低严重性 96
订单数据库 :低可能性,高严重性 97
自定义字体 :高可能性,低严重性 98
T 恤图片 :高可能性,高严重性 98
风险模型 99
风险模型的作用域 101
创建风险模型 102
使用风险模型来制订计划 104
维护风险模型 105
风险缓和 106
恢复计划 108
容灾计划 109
改进我们的风险状况 109
第 10 章 比赛日 110
预发布环境和生产环境 110
预发布 / 测试环境 110
生产环境 111
在生产环境中举行比赛日的担心 112
小结 113
第 11 章 构建低风险系统114
技巧 1 :介绍冗余 115
幂等接口 115
增加了复杂性的冗余改进 116
技巧 2 :理解独立性 117
技巧 3 :管理安全性 118
技巧 4 :鼓励简单性 118
技巧 5 :自我修复 119
技巧 6 :标准化运维流程 120
小结 121
第Ⅴ部分 原则 5 云计算 :利用云计算
第 12 章 使用云计算来设计可伸缩架构125
云计算成熟度的 6 个级别 126
级别 1 :体验云计算 126
级别 2 :确认云计算 127
级别 3 :使用云计算中的服务器和应用程序 127
级别 4 :使用增值的托管服务 127
级别 5 :使用云特有的服务 128
级别 6 :全面拥抱云计算 128
组织与应用程序的成熟度级别对比 128
使用云计算时可能犯的错误 129
陷阱 1 :不相信云安全 129
陷阱 2 :直接迁移到云计算 129
陷阱 3 :无服务器的诱惑 — 太过于依赖炒作 130
何时以及如何使用多个云计算平台 131
如何定义我们所说的多个云平台 131
选择哪个模型?哪种云? 134
云计算小结 135
第 13 章 云计算改变的 5 个行业趋势136
云计算有哪些变化 136
变化 1 :对基于微服务架构的认可 136
变化 2 :更小、更专业的服务 137
变化 3 :更专注于应用程序 137
变化 4 :微型初创公司 137
变化 5 :安全和合规已经成熟 137
变化还在继续 138
第 14 章 SaaS 和租赁类型139
比较托管主机和不同类型的 SaaS 139
托管主机 140
多租户 SaaS 140
单租户 SaaS 141
混合不同类型的 SaaS 142
常见的 SaaS 的特点 142
SaaS 与托管主机 142
小结 143
第 15 章 在 AWS 云上分发你的应用程序144
AWS 的架构 144
AWS 区域 145
AWS 可用区 145
数据中心 146
总体架构概述 146
可用区不是数据中心 149
如何通过地理多样性真正做到高可用 151
映射多个账户中的可用区 151
分发应用程序 152
第 16 章 托管的基础设施153
基于云的服务架构 153
原生资源 154
基于服务器的托管资源 156
无服务器托管资源 157
使用托管资源和非托管资源的影响 158
小结 159
第 17 章 云资源分配160
基于使用量的资源分配 161
固定额度的资源分配 162
调整分配 164
资源容量的自动分配 164
自动分配的问题 164
动态分配,动态成本 165
资源分配技术的利与弊 166
第 18 章 无服务器计算和函数即服务167
示例 1 :事件处理 168
示例 2 :手机应用后端 168
示例 3 :物联网数据采集 169
FaaS 的优缺点 170
无服务器炒作和 FaaS 的未来 171
第 19 章 边缘计算172
如今的边缘计算 173
为什么我们要关心边缘计算 173
与云计算相比,边缘计算应该是什么 174
如何决定把什么放在边缘?以无人驾驶汽车为例 174
边缘计算的可伸缩与云计算的可伸缩不同 176
使用边缘计算和云计算的标准 178
边缘计算成功的 8 个关键点 178
#1 :知道什么时候应该使用边缘计算 179
#2 :不要忽略边缘计算中的 DevOps 原则 179
#3 :制定一个高度分布式的部署策略 179
#4 :尽可能减少版本控制 179
#5 :减少每个节点的配置项 180
#6 :伸缩也是边缘计算要面对的一个问题,不仅仅是云计算 180
#7 :重视监测和分析 181
#8 :边缘计算不是魔法 181
边缘计算小结 181
第 20 章 地理位置对云计算的影响182
云无处不在,只不过影响的层次不同 182
替换心态影响你如何接受云计算 183
哪个云服务商最重要 184
重要的技术区别 184
数据主权是普遍的 185
我的看法 185
第Ⅵ部分 总结
第 21 章 综述188
原则 #1 — 可用性 188
原则 #2 — 架构 189
原则 #3 — 组织 189
原则 #4 — 风险 189
原则 #5 — 云计算 190
面向可伸缩架构 190
......(更多)
......(更多)