书籍详情

微服务之道

微服务之道

作者:[爱尔兰]理查德·罗杰(Richard Rodger)

出版社:人民邮电出版社

出版时间:2023-04-01

ISBN:9787115611277

定价:¥89.80

购买这本书可以去
内容简介
  本书力求揭示微服务设计背后的思想,引导读者理解和构建微服务。全书分为两部分。第一部分介绍微服务的工程原则,从具体的案例研究引入微服务的概念及优缺点,阐示了如何决定要构建哪些微服务及服务间的通信,介绍了消息优先的方法,展示了微服务如何以更恰当的方式存储和处理不同类型的数据,探讨了如何在生产环境中运行大量微服务。第二部分介绍如何利用微服务架构的工程优势来克服环境带来的挑战,以及度量微服务系统的方法,指导读者一步步地从老的单体系统过渡到能够轻松适应新功能需求的微服务系统,最后使用前面章节介绍的原则,从头开始构建了一个完整的微服务系统。
作者简介
  理查德·罗杰(Richard Rodger)曾在爱尔兰都柏林三一学院学习数学和哲学,在爱尔兰沃特福德理工学院学习计算机科学。1986 年开始在 Sinclair ZX Spectrum 上写代码至今;Seneca 微服务框架的维护者。会展业社交网络公司voxgig的首席执行官,拥有多年为大型跨国公司构建微服务系统的经验。曾任移动应用 SaaS平台 FeedHenry(后来被 Red Hat 收购)的首席技术官,后与他人联合创立了nearForm—— 关于 Node.js 和微服务的咨询公司。他还著有Mobile Application Development in the Cloud(《移动云计算应用开发入门经典》)(Wiley,2011)一书。
目录
第 一部分 构建微服务
第 1 章 美丽新世界 3
1.1 技术债务危机 3
1.2 案例研究:微博初创公司 5
1.2.1 迭代 0:发布条目 6
1.2.2 迭代 1:搜索索引 9
1.2.3 迭代 2:简单组合 11
1.2.4 迭代 3:时间线 14
1.2.5 迭代 4:扩展 16
1.3 单体如何违背组件的承诺 18
1.4 微服务理念 20
核心技术原则 21
1.5 实际意义 24
1.5.1 规范 25
1.5.2 部署 26
1.5.3 安全 27
1.5.4 人 27
1.6 你的钱换来了什么 28
1.7 总结 29
第 2 章 服务 30
2.1 定义微服务 30
2.2 案例研究:数字版报纸 32
2.2.1 业务目标 32
2.2.2 非正式需求 33
2.2.3 功能分解 33
2.3 微服务架构 34
迷你 Web 服务器架构 34
2.4 微服务示意图 35
2.5 微服务依赖树 36
异步消息架构 39
2.6 单体项目与微服务项目 41
2.6.1 微服务如何改变项目管理 43
2.6.2 一致性使评估更容易 43
2.6.3 一次性代码让团队更和谐 44
2.6.4 同质组件允许异构配置 44
2.6.5 不同类型的代码 45
2.7 软件单元 46
2.8 从需求到消息再到服务 47
2.9 微服务架构图 49
绘制消息流图 52
2.10 微服务是软件组件 53
2.10.1 封装 53
2.10.2 可重复使用 53
2.10.3 定义明确的接口 54
2.10.4 可组合 54
2.10.5 微服务组件实践 54
2.11 微服务的内部结构 57
2.12 总结 57
第 3 章 消息 59
3.1 消息是一等公民 59
3.1.1 同步和异步 60
3.1.2 何时使用同步消息 61 2
3.1.3 何时使用异步消息 62
3.1.4 从第 一天开始就思考
分布式 63
3.1.5 减少失败的策略 65
3.2 案例研究:销售税规则 66
更广泛的背景 66
3.3 模式匹配 67
3.3.1 销售税:从简单开始 68
3.3.2 销售税:处理类别 69
3.3.3 销售税:走向全球 71
3.3.4 业务需求显然会发生变化 72
3.3.5 模式匹配降低了重构的成本 72
3.4 传输独立性 73
一个有用的虚构:无所不能的观察者 73
3.5 消息模式 74
3.5.1 核心模式:一条消息/两个服务 75
3.5.2 核心模式:两条消息/两个服务 77
3.5.3 核心模式:一条消息/n 个服务 79
3.5.4 核心模式:m 条消息/n 个服务 81
3.5.5 m/n:链 81
3.5.6 m/n:树 82
3.5.7 扩展消息 83
3.6 当消息出问题时 84
3.6.1 常见故障场景及如何应对 85
3.6.2 请求/响应交互故障 85
3.6.3 响尾蛇交互的故障 86
3.6.4 赢家通吃交互的故障 86
3.6.5 即发即弃交互的故障 87
3.7 总结 88
第 4 章 数据 89
4.1 数据与想象不同 90
4.1.1 数据同质而非异质 90
4.1.2 数据可以私有 91
4.1.3 数据可以是本地的 92
4.1.4 数据可以自由处置 94
4.1.5 数据不一定要准确 94
4.2 微服务的数据策略 95
4.2.1 使用消息公开数据 95
4.2.2 使用组合操作数据 96
4.2.3 通过系统配置控制数据 99
4.2.4 使用弱约束来分发数据 104
4.3 重新思考传统数据模式 105
4.3.1 主键 106
4.3.2 外键 107
4.3.3 事务 108
4.3.4 事务并不像想象的
那么好 111
4.3.5 模式引起技术债务 112
4.4 微服务数据实用决策指南 113
4.4.1 全新项目 113
4.4.2 改造项目 114
4.5 总结 115
第 5 章 部署 116
5.1 事物的崩溃 116
5.2 从历史中吸取教训 117
5.2.1 三英里岛 117
5.2.2 软件系统故障模型 121
5.2.3 冗余并不像想象的那样 125
5.2.4 更改很可怕 126
5.3 妄想经不起反驳 128
完美软件的成本 129
5.4 混乱的系统 129
5.5 微服务和冗余 130
5.6 持续交付 131
5.6.1 管道 132
5.6.2 流程 133
5.6.3 保护 133
5.7 运行微服务系统 134
5.7.1 不变性 134
5.7.2 自动化 137
5.7.3 复原能力 141
5.7.4 验证 146
5.7.5 发现 147
5.7.6 配置 148
5.7.7 安全 149
5.7.8 阶段系统 150
5.7.9 开发 150
5.8 总结 152 目录
第二部分 运行微服务
第 6 章 测量 155
6.1 传统监控的局限性 156
6.1.1 经典配置 156
6.1.2 平均数的问题 158
6.1.3 使用百分位数 159
6.1.4 微服务配置 162
6.1.5 散点图的威力 162
6.1.6 构建仪表板 164
6.2 微服务的测量 164
6.2.1 业务层 165
6.2.2 消息层 165
6.2.3 服务层 172
6.3 不变量的威力 175
6.3.1 从业务逻辑中寻找不变量 176
6.3.2 从系统架构中寻找不变量 177
6.3.3 可视化不变量 179
6.3.4 理解系统 179
6.3.5 合成验证 181
6.4 总结 182
第 7 章 迁移 183
7.1 经典电子商务示例 183
7.1.1 旧架构 184
7.1.2 软件交付过程 185
7.2 更改目标 186
在实践中应用政治 188
7.3 开始旅程 189
7.4 扼杀者策略 190
7.4.1 部分代理 191
7.4.2 当不能迁移时该怎么办 192
7.4.3 新项目的策略 193
7.4.4 宏服务策略 195
7.5 优化策略 197
7.6 从一般到具体 197
7.6.1 向产品页面添加功能 197
7.6.2 向购物车添加功能 200
7.6.3 处理横向问题 202
7.7 总结 202
第 8 章 人 204
8.1 应对公司政治 204
8.1.1 接受硬性限制 205
8.1.2 寻找支持者 205
8.1.3 保持沟通合作 207
8.1.4 以价值为中心的交付 207
8.1.5 可接受的错误率 208
8.1.6 删减功能 208
8.1.7 停止抽象 209
8.1.8 反灌输 209
8.1.9 外部认可 210
8.1.10 团队协作 210
8.1.11 尊重公司 211
8.2 微服务的政治 211
8.2.1 谁拥有什么 211
8.2.2 谁在待命 213
8.2.3 谁决定代码内容 214
8.3 总结 218
第 9 章 案例研究:Nodezoo.com 219
9.1 设计 220
9.1.1 业务需求是什么 220
9.1.2 消息是什么 221
9.1.3 有哪些服务 226
9.2 交付 231
9.2.1 迭代 1:本地开发 232
9.2.2 迭代 2:测试、阶段系统和风险测量 243
9.2.3 迭代 3:生产路径 248
9.2.4 迭代 4:增强和适应 253
9.2.5 迭代 5:监控和调试 258
9.2.6 迭代 6:扩展和性能 262
9.3 结语 264
猜您喜欢

读书导航