可伸缩架构
出版信息
【美】Lee Atchison / 张若飞、张现双 / 电子工业出版社 / 2017-7 / 65
内容简介
随着互联网的发展越来越成熟,流量和数据量飞速增长,许多公司的关键应用程序都面临着伸缩性的问题,系统变得越来越复杂和脆弱,从而导致风险上升、可用性降低。《可伸缩架构:面向增长应用的高可用》是一本实践指南,让IT、DevOps和系统稳定性管理员能够了解到,如何避免应用程序在发展过程中变得缓慢、数据不一致或者彻底不可用等问题。规模增长并不只意味着处理更多的用户,还包括管理更多的风险和保证系统的可用性。作者Lee Atchison 在可用性、风险管理、服务和微服务、扩展应用程序和云服务方面提出了一些技巧,使得我们在构建各类应用程序时,既能够保证产品的质量,又能够处理海量的流量、数据以及需求。
如果你管理着软件开发人员、系统可靠性工程师、DevOps工程师,或者你经营着一个拥有大规模应用程序和系统的机构,《可伸缩架构:面向增长应用的高可用》中所提供的建议和指导都能够帮助你,让你的系统运行得更加平稳和可靠。
作者简介
Lee Atchison 是New Relic 公司的首席云架构师和布道师。他已经在New Relic 工作了4年,负责设计并领导建立了New Relic 的基础设施产品,帮助New Relic 搭建了健壮的服务化系统架构,支撑起公司从一个很小的SaaS 创业公司成长为一个高流量的公众企业。他非常擅长构建高可用的系统。
Lee 拥有28 年的行业工作背景,之前在Amazon.com 担任了7 年高级经理,了解到如何搭建基于云的、可伸缩的系统架构。在Amazon,他领导并建立了公司第一个软件下载商店,搭建了AWS Elastic Beanstalk 服务,并带领团队将Amazon 的零售平台从一个单体架构成功迁移到了基于服务的架构。
目录
序 xv
前言 xvii
第Ⅰ部分可用性
第 1章 什么是可用性 2
可用性与可靠性 3
什么导致了低可用性 4
第 2章 提高应用程序可用性的五个要点 6
要点 1:时刻考虑应对故障 7
要点 2:时刻考虑如何伸缩 8
要点 3:缓和风险 9
要点 4:监控可用性 10
要点 5:以预测和确定的方式来应对可用性问题 11
做好准备 12
第 3章 测量可用性 13
N个 9 14
-- 什么样的可用性是合理的 14
不要上当 14
通过数字来体现可用性 15
第4 章 提高下降的可用性 16
测试并跟踪当前的可用性 17
将手动流程自动化 17
-- 自动化部署 18
-- 配置管理 18
-- 更改实验和高频次更改 19
-- 自动化的变更完备性测试 20
改进你的系统 20
不断变化和发展中的应用程序 20
时刻关注可用性 21
第Ⅱ部分 风险管理
第 5章 什么是风险管理. 24
管理风险 25
识别风险 25
消除最严重的风险 26
风险缓和 26
定期检查 27
对风险管理的总结 27
第 6章 可能性与严重性. 28
10佳列表:低可能性,低严重性 29
订单数据库:低可能性,高严重性 29
自定义字体:高可能性,低严重性 30
T恤图片:高可能性,高严重性 31
第 7章 风险模型 32
风险模型的作用域 34
创建风险模型 34
-- 通过头脑风暴建立风险列表 35
-- 填写可能性和严重性字段 36
-- 风险项详情 37
-- 缓和计划 37
-- 触发计划 37
使用风险模型来制订计划 37
维护风险模型 38
第 8章 风险缓和 40
恢复计划 41
容灾计划 42
改进我们的风险状况 43
第 9章 比赛日 44
预发布环境和生产环境. 44
在生产环境中举行比赛日的担心 46
比赛日测试 47
第 10章 构建低风险系统 48
冗余 48
幂等接口示例 49
增加了复杂性的冗余改进 49
独立性 50
安全 51
简单性 51
自修复 52
运维流程 53
第Ⅲ部分 服务和微服务
第 11章 为什么使用服务. 56
单体应用程序 56
基于服务的应用程序 57
所有权收益 58
规模收益 60
第12 章 使用微服务 62
如何定义服务 63
-- 深入了解服务 63
-- 指导原则 1:特定的业务需求 63
-- 指导原则 2:清晰和独立的团队所有权 64
-- 指导原则 3:天然隔离的数据 65
-- 指导原则 4:共享的能力 /数据 67
-- 多种原因 67
过犹不及 68
适当的平衡 69
第 13章 处理服务故障 70
级联式的服务故障 70
如何响应服务故障 71
-- 可预测的响应 72
-- 可理解的响应 73
-- 合理的响应 73
如何确定故障 74
适当的行为 76
-- 优雅降级 76
-- 优雅补偿 77
-- 尽早失败 77
-- 用户导致的问题 78
第4部分 如何让应用程序具有伸缩性
第 14章 两次失误的高度 82
什么是“两次失误的高度” 83
实践中的“两次失误的高度” 83
-- 丢失一个节点 83
-- 升级过程中出现的问题 85
-- 数据中心恢复 86
-- 隐蔽的共享故障类型 88
-- 故障循环 89
管理你的应用程序 90
航天飞机 90
第 15章 服务所有权 92
由独立团队负责的服务架构 92
STOSA应用程序和组织的好处 94
成为一个服务所有者意味着什么 94
第 16章 服务分级. 97
应用复杂性 97
什么是服务分级 98
为服务分配服务级别标签 99
-- 1级服务 99
-- 2级服务 99
-- 3级服务 100
-- 4级服务 100
示例:在线商店 100
接下来呢 103
第 17章 使用服务分级. 104
期望 104
响应性 104
依赖 106
-- 关键依赖 106
-- 非关键依赖. 107
小结 107
第 18章 服务等级协议. 108
什么是服务等级协议 108
外部 SLA与内部 SLA的对比 110
为什么内部 SLA很重要 110
SLA可以作为一种信任的手段 111
SLA可以用于问题诊断 111
SLA 的性能检测方法 112
-- 限定 SLA 113
-- 排名 SLA 113
-- 延迟分组 115
究竟应当定义多少内部 SLA,以及定义哪些内部 SLA 116
关于 SLA的其他评价 116
第Ⅴ部分 云服务
第 19章 持续改进. 117
定期检查你的应用程序 117
微服务 118
服务所有权 118
无状态服务 118
数据在哪里 118
数据分区 119
持续改进的重要性 121
第 20章 变化和云服务.124
云服务有哪些变化 124
-- 对基于微服务架构的认可 124
-- 更小、更专业的服务 125
-- 更专注于应用程序 125
-- 微型初创公司 125
-- 安全和合规已经成熟 125
变化还在继续 125
第 21章 云上的分布.127
AWS的架构 127
-- AWS区域 127
-- AWS可用区 128
-- 数据中心 128
总体架构概述 129
可用区不是数据中心 131
如何通过地理多样性真正做到高可用 133
第 22章 托管的基础设施. 134
基于云的服务架构 134
-- 原生资源 135
-- 托管资源(基于服务器) 136
-- 托管资源(不基于服务器) 137
使用托管资源的影响 138
使用非托管资源的影响 138
监控和 CloudWatch 138
第 23章 云资源分配. 140
固定额度的资源分配 140
-- 调整分配 141
-- 预留容量 142
基于使用量的资源分配 143
-- 基于使用量分配资源的好处 144
资源分配技术的利与弊 145
第 24章 可伸缩的计算选项. 146
云服务器 147
-- 优点 147
-- 缺点 147
-- 适用场景 147
计算分片 147
-- 优点 147
-- 缺点 148
-- 适用场景 148
动态容器 148
-- 优点 148
-- 缺点 149
-- 适用场景 149
微计算 149
-- 优点 149
-- 缺点 150
-- 适用场景 149
如何选择 150
第 25章 AWS.Lambda. 151
使用 Lambda 151
-- 事件处理 151
-- 手机应用后台 152
-- 物联网数据采集 153
Lambda的优缺点 154
第Ⅵ部分 总结
第 26章 融会贯通156
可用性 156
风险管理 157
服务 157
扩展 157
云服务 158
面向可伸缩的架构 158
索引 159