微服务之道
链接:https://pan.baidu.com/s/1Sv2d3Uc4IEpRKXb74oTpBw?pwd=uowj
提取码:uowj

内容简介
本书力求揭示微服务设计背后的思想,引导读者理解和构建微服务。全书分为两部分。第一部分介绍微服务的工程原则,从具体的案例研究引入微服务的概念及优缺点,阐示了如何决定要构建哪些微服务及服务间的通信,介绍了消息优先的方法,展示了微服务如何以更恰当的方式存储和处理不同类型的数据,探讨了如何在生产环境中运行大量微服务。第二部分介绍如何利用微服务架构的工程优势来克服环境带来的挑战,以及度量微服务系统的方法,指导读者一步步地从老的单体系统过渡到能够轻松适应新功能需求的微服务系统,最后使用前面章节介绍的原则,从头开始构建了一个完整的微服务系统。
作者简介
理查德.罗杰(Richard Rodger)曾在爱尔兰都柏林三一学院学习数学和哲学,在爱尔兰沃特福德理工学院学习计算机科学。1986 年开始在 Sinclair ZX Spectrum 上写代码至今;Seneca 微服务框架的维护者。会展业社交网络公司voxgig的首席执行官,拥有多年为大型跨国公司构建微服务系统的经验。曾任移动应用 SaaS平台 FeedHenry(后来被 Red Hat 收购)的首席技术官,后与他人联合创立了nearForm—— 关于 Node.js 和微服务的咨询公司。他还著有Mobile Application Development in the Cloud(《移动云计算应用开发入门经典》)(Wiley,2011)一书。
精彩书评
作者既有实践经验,又对这些概念有深刻的理解——难能可贵。
——Sujith S. Pillai, Cloud Maxima
为现实生活中的微服务实现者提供了大量有用的建议。
——Victor Tatai, Fitbit
用新颖、深入、富含哲理的方法来研究微服务。非常引人入胜,发人深省。
——Lukasz Sowa, Itrators
正如标题所描述的那样。这本书展示了通往微服务的“道路”——实际上是“真正的道路”。
——Peter Perlepes, Growth
目录
第 一部分 构建微服务
第 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 目录