-
内容大纲
本书力求揭示微服务设计背后的思想,引导读者理解和构建微服务。全书分为两部分。第一部分介绍微服务的工程原则,从具体的案例研究引入微服务的概念及优缺点,阐释了如何决定要构建哪些微服务及服务间的通信,介绍了消息优先的方法,展示了微服务如何以更恰当的方式存储和处理不同类型的数据,探讨了如何在生产环境中运行大量微服务。第二部分介绍如何利用微服务架构的工程优势来克服环境带来的挑战,以及度量微服务系统的方法,指导读者一步步地从老的单体系统过渡到能够轻松适应新功能需求的微服务系统,最后使用前面章节介绍的原则,从头开始构建了一个完整的微服务系统。
本书面向高级开发人员、软件架构师、项目经理和产品经理,也适合那些关心如何更高效、更人性化地构建软件的人阅读。 -
作者介绍
理查德·罗杰(Richard Rodger),曾在爱尔兰都柏林三一学院学习数学和哲学,在爱尔兰沃特福德理工学院学习计算机科学。1986年开始在 Sinclair ZX Spectrum上写代码至今;Seneca微服务框架的维护者。会展业社交网络公司voxgig的首席执行官,拥有多年为大型跨国公司构建微服务系统的经验。曾任移动应用SaaS平台FeedHenry(后来被Red Hat收购)的首席技术官,后与他人联合创立了nearForm——关于Node.js和微服务的咨询公司。他还著有Mobile Application Development in the Cloud(《移动云计算应用开发入门经典》)(Wiley,2011)一书。 -
目录
第一部分 构建微服务
第1章 美丽新世界
1.1 技术债务危机
1.2 案例研究:微博初创公司
1.2.1 迭代0:发布条目
1.2.2 迭代1:搜索索引
1.2.3 迭代2:简单组合
1.2.4 迭代3:时间线
1.2.5 迭代4:扩展
1.3 单体如何违背组件的承诺
1.4 微服务理念
核心技术原则
1.5 实际意义
1.5.1 规范
1.5.2 部署
1.5.3 安全
1.5.4 人
1.6 你的钱换来了什么
1.7 总结
第2章 服务
2.1 定义微服务
2.2 案例研究:数字版报纸
2.2.1 业务目标
2.2.2 非正式需求
2.2.3 功能分解
2.3 微服务架构
迷你Web服务器架构
2.4 微服务示意图
2.5 微服务依赖树
异步消息架构
2.6 单体项目与微服务项目
2.6.1 微服务如何改变项目管理
2.6.2 一致性使评估更容易
2.6.3 一次性代码让团队更和谐
2.6.4 同质组件允许异构配置
2.6.5 不同类型的代码
2.7 软件单元
2.8 从需求到消息再到服务
2.9 微服务架构图
绘制消息流图
2.10 微服务是软件组件
2.10.1 封装
2.10.2 可重复使用
2.10.3 定义明确的接口
2.10.4 可组合
2.10.5 微服务组件实践
2.11 微服务的内部结构
2.12 总结
第3章 消息
3.1 消息是一等公民
3.1.1 同步和异步
3.1.2 何时使用同步消息
3.1.3 何时使用异步消息
3.1.4 从第一天开始就思考分布式
3.1.5 减少失败的策略
3.2 案例研究:销售税规则
更广泛的背景
3.3 模式匹配
3.3.1 销售税:从简单开始
3.3.2 销售税:处理类别
3.3.3 销售税:走向全球
3.3.4 业务需求显然会发生变化
3.3.5 模式匹配降低了重构的成本
3.4 传输独立性
一个有用的虚构:无所不能的观察者
3.5 消息模式
3.5.1 核心模式:一条消息/两个服务
3.5.2 核心模式:两条消息/两个服务
3.5.3 核心模式:一条消息/n 个服务
3.5.4 核心模式:m 条消息/n 个服务
3.5.5 m/n:链
3.5.6 m/n:树
3.5.7 扩展消息
3.6 当消息出问题时
3.6.1 常见故障场景及如何应对
3.6.2 请求/响应交互故障
3.6.3 响尾蛇交互的故障
3.6.4 赢家通吃交互的故障
3.6.5 即发即弃交互的故障
3.7 总结
第4章 数据
4.1 数据与想象不同
4.1.1 数据同质而非异质
4.1.2 数据可以私有
4.1.3 数据可以是本地的
4.1.4 数据可以自由处置
4.1.5 数据不一定要准确
4.2 微服务的数据策略
4.2.1 使用消息公开数据
4.2.2 使用组合操作数据
4.2.3 通过系统配置控制数据
4.2.4 使用弱约束来分发数据
4.3 重新思考传统数据模式
4.3.1 主键
4.3.2 外键
4.3.3 事务
4.3.4 事务并不像想象的那么好
4.3.5 模式引起技术债务
4.4 微服务数据实用决策指南
4.4.1 全新项目
4.4.2 改造项目
4.5 总结
第5章 部署
5.1 事物的崩溃
5.2 从历史中吸取教训
5.2.1 三英里岛
5.2.2 软件系统故障模型
5.2.3 冗余并不像想象的那样
5.2.4 更改很可怕
5.3 妄想经不起反驳
完美软件的成本
5.4 混乱的系统
5.5 微服务和冗余
5.6 持续交付
5.6.1 管道
5.6.2 流程
5.6.3 保护
5.7 运行微服务系统
5.7.1 不变性
5.7.2 自动化
5.7.3 复原能力
5.7.4 验证
5.7.5 发现
5.7.6 配置
5.7.7 安全
5.7.8 阶段系统
5.7.9 开发
5.8 总结 152 目录
第二部分 运行微服务
第6章 测量
6.1 传统监控的局限性
6.1.1 经典配置
6.1.2 平均数的问题
6.1.3 使用百分位数
6.1.4 微服务配置
6.1.5 散点图的威力
6.1.6 构建仪表板
6.2 微服务的测量
6.2.1 业务层
6.2.2 消息层
6.2.3 服务层
6.3 不变量的威力
6.3.1 从业务逻辑中寻找不变量
6.3.2 从系统架构中寻找不变量
6.3.3 可视化不变量
6.3.4 理解系统
6.3.5 合成验证
6.4 总结
第7章 迁移
7.1 经典电子商务示例
7.1.1 旧架构
7.1.2 软件交付过程
7.2 更改目标
在实践中应用政治
7.3 开始旅程
7.4 扼杀者策略
7.4.1 部分代理
7.4.2 当不能迁移时该怎么办
7.4.3 新项目的策略
7.4.4 宏服务策略
7.5 优化策略
7.6 从一般到具体
7.6.1 向产品页面添加功能
7.6.2 向购物车添加功能
7.6.3 处理横向问题
7.7 总结
第8章 人
8.1 应对公司政治
8.1.1 接受硬性限制
8.1.2 寻找支持者
8.1.3 保持沟通合作
8.1.4 以价值为中心的交付
8.1.5 可接受的错误率
8.1.6 删减功能
8.1.7 停止抽象
8.1.8 反灌输
8.1.9 外部认可
8.1.10 团队协作
8.1.11 尊重公司
8.2 微服务的政治
8.2.1 谁拥有什么
8.2.2 谁在待命
8.2.3 谁决定代码内容
8.3 总结
第9章 案例研究:Nodezoo.com
9.1 设计
9.1.1 业务需求是什么
9.1.2 消息是什么
9.1.3 有哪些服务
9.2 交付
9.2.1 迭代1:本地开发
9.2.2 迭代2:测试、阶段系统和风险测量
9.2.3 迭代3:生产路径
9.2.4 迭代4:增强和适应
9.2.5 迭代5:监控和调试
9.2.6 迭代6:扩展和性能
9.3 结语
同类热销排行榜
- C语言与程序设计教程(高等学校计算机类十二五规划教材)16
- 电机与拖动基础(教育部高等学校自动化专业教学指导分委员会规划工程应用型自动化专业系列教材)13.48
- 传感器与检测技术(第2版高职高专电子信息类系列教材)13.6
- ASP.NET项目开发实战(高职高专计算机项目任务驱动模式教材)15.2
- Access数据库实用教程(第2版十二五职业教育国家规划教材)14.72
- 信号与系统(第3版下普通高等教育九五国家级重点教材)15.08
- 电气控制与PLC(普通高等教育十二五电气信息类规划教材)17.2
- 数字电子技术基础(第2版)17.36
- VB程序设计及应用(第3版十二五职业教育国家规划教材)14.32
- Java Web从入门到精通(附光盘)/软件开发视频大讲堂27.92
推荐书目
-
孩子你慢慢来/人生三书 华人世界率性犀利的一枝笔,龙应台独家授权《孩子你慢慢来》20周年经典新版。她的《...
-
时间简史(插图版) 相对论、黑洞、弯曲空间……这些词给我们的感觉是艰深、晦涩、难以理解而且与我们的...
-
本质(精) 改革开放40年,恰如一部四部曲的年代大戏。技术突变、产品迭代、产业升级、资本对接...