第1章微服务揭秘
1.1 微服务的演进
- 1.1.1 微服务演进的催化剂——业务需求
- 1.1.2 微服务演进的催化剂——技术演进
-
1.1.3 架构演进势在必行
1.2 什么是微服务
1.3 微服务蜂巢
1.4 微服务架构的设计原则
- 1.4.1 每个服务承担单一责任
- 1.4.2 微服务是自治的
1.5 微服务的特性
- 1.5.1 服务是一等公民
- 1.5.2 微服务是轻量级的
- 1.5.3 微服务的混合架构
- 1.5.4 微服务环境中的自动化
- 1.5.5 微服务的生态支持系统
- 1.5.6 微服务是动态分布式的
- 1.5.7 抗脆弱、快速失败和自我愈合
1.6 微服务的实例
- 1.6.1 一个酒店门户网站的例子
- 1.6.2 一个旅行社门户网站的例子
1.7 微服务架构的优势
- 1.7.1 支持混合架构
- 1.7.2 为试验和创新赋能
- 1.7.3 弹性伸缩和选择性扩容
- 1.7.4 服务可替换
- 1.7.5 为构建有机系统赋能
- 1.7.6 有助于管理技术债
- 1.7.7 允许不同版本并存
- 1.7.8 支持构建自组织系统
- 1.7.9 支持事件驱动架构
-
1.7.10 为evOps赋能
1.8 小结
第2章 相关架构风格和用例
2.1 SOA
- 2.1.1 面向服务的集成
- 2.1.2 遗留系统现代化
- 2.1.3 面向服务的应用
-
2.1.4 用S0A迁移单体应用
2.2 十二要素应用
- 2.2.1 单一代码库
- 2.2.2 依赖捆绑
- 2.2.3 配置外部化
- 2.2.4 支撑服务可寻址
- 2.2.5 构建、发布和运行时的隔离
- 2.2.6 无状态、不共享进程
- 2.2.7 通过端口绑定呆露服务
- 2.2.8 以水平扩展实现高并发
- 2.2.9 以最小的开销实现可处置性
- 2.2.10 开发环境和生产环境的对等性
- 2.2.11 日志信息外部化
- 2.2.12 打包后台管理进程
2.3 无服务器计算
2.4 Lanbda架构
2.5 DevCps、云计算和容器
- 2.5 1 DevCps是实现微服务架构的实践和流程
- 2.5.2 以云计算和容器作为微服务的自助式基础设施
2.6 响应式微服务一个基于响应式微服务的订单管理系统
2.7 微服务用例
2.8 微服务先行者的共同点单体迁移是常见用例
2.9 微服务框架
2.10 小结
第 3 章 用Spr ing Boot构建微服务
3.1 搭建开发环境
3.2 用Spr ing Boot构建EESTful微服务
3.3 Spring Boot入门
3.4 开发Spring Boot微服务
3.5 开发第一个Spring Boot微服务测试Spring Boot微服务
3.6 启用HATEOAS的Spring Boot微服务
3.7 响应式Spring Boot微服务
- 3.7.1 使用Spring WehFlux实现响应式微服务
- 3.7.2 用Spring Boot和RabbitMQ实现响应式微服务
3.8 实现微服务安全
- 3.8.1 用基本安全策略保护微服务
- 3.8.2 用OAuth2保护微服务
3.9 为微服务交互启用跨域访问
3.10 使用Spring Boot Ac tusa tor实现微服务ins trumen tation
- 3.10.1 利用JCon sole监控应用
- 3.10.2 利用ssh监控应用
- 3.10.3 添加自定义健康检查模块
-
3.10.4 自定义指标
3.11 微服务文档化
3.12 综合实例:开发客户注册微服务
3.13 小结
第4章 应用微服务概念
4.1 微服务设计指南
- 4.1.1 确定微服务的边界
- 4.1.2 设计微服务通信方式
- 4.1.3 微服务编排
- 4.1.4 每个微服务包含多少个端口——一个还是多个
- 4.1.5 每个虚拟机运行多少个微服务——一个还是多个
- 4.1.6 规则引擎——共享还是嵌入
- 4.1.7 BPM和工作流的作用
- 4.1.8 微服务可以共享数据库吗
- 4.1.9 微服务可以无头吗
- 4.1.10 确定事务边界
- 4.1.11 服务端口设计的考量点
- 4.1.12 处理共享类库
- 4.1.13 微服务中的UI
- 4.1.14 微服务中使用API网关
- 4.1.15 在微服务架构中使用ESB和l iPaas
- 4.1.16 服务版本化的考虑
- 4.1.17 跨域设计
- 4.1.18 处理共享的引用数据
-
4.1.19 微服务和批量操作
4.2 小结
第5章 微服务能力模型
5.1 微服务能力模型简介
5.2 核心能力
- 5.2.1 服务监听器和类库
- 5.2.2 存储能力
- 5.2.3 服务实现
- 5.2.4 服务端口
5.3 基础设施能力
- 5.3.1 云计算
- 5.3.2 容器运行时
- 5.3.3 容器编排
5.4 支撑能力
- 5.4.1 服务网关
- 5.4.2 软件定义的负载均衡
- 5.4.3 集中式日志管理
- 5.4.4 服务发现
- 5.4.5 安全服务
- 5.4 6 服务配置
- 5.4.7 运维监控
- 5.4.8 依赖管理
- 5.4.9 数据湖
- 5.4.10 可靠的消息机制
5.5 流程和治理能力
- 5.5.1 DevOps5.52自动化工具
- 5.5.3 容器注册表
- 5.5.4 微服务文档化
-
5.5.5 参考架构和类库
5.6 微服务成熟度模型
- 5.6.1 第0级——传统
- 5.6.2 第1级——初级
- 5.6.3 第2级——中级
- 5.6.4 第3级——高级
5.7 微服务采用的入口
5.8 小结
第6章 微服务演进案例研究
6.1 理解PSS应用
- 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.3.6 迁移过程中的数据同步
- 6.3.7 管理引用数据
- 6.3.8 UI和Wcb应用
- 6.3.9 测试策略
- 6.3.10 构建生态系统能力
- 6.3.11 只迁移必要的模块
- 6.3.12 微服务的内部层次结构
- 6.3.13 微服务编排
- 6.3.14 与其他系统的集成
- 6.3.15 迁移共享类库
- 6.3.16 处理异常
6.4 目标实现
- 6.4.1 项目实现
- 6.4.2 项目运行和测试
6.5 后续工作
6.6 小结
第7章 用Spring Cloud组件扩展微服务
7.1 什么是Spr ing Cloud
7.2 Spring Cloud的版本
7.3 搭建BrownField航空公司PSS系统的项目环境
7.4 Spring Cloud Config
- 7.4.1 用配置服务器构建微服务
- 7.4.2 搭建配置服务器
- 7.4.3 理解配置服务器URL
- 7.4.4 处理配置变更
- 7.4.5 用Spring Cloud总线推送配置变更
- 7.4.6 搭建配置服务器的高可用集群
- 7.4.7 监控配置服务器的健康状态
- 7.4.8 用配置服务器管理配置文件
- 7.4.9 完成修改以使用配置服务器
7.5 将Eurcka用于服务注册和发现
- 7.5.1 理解动态服务注册和发现
- 7.5.2 理解Eureka
- 7.5.3 搭建Eureka服务器
- 7.5.4 Eureka的高可用性
7.6 用Zul代理作为API网关
- 7.6.1 搭建Zuul
- 7.6.2 Zunul的高可用性
7.7 响应式微服务流
7.8 用Spring Cloud Security 保护微服务
7.9 总结BrownField航空公司的PSS应用架构
7.10 小结
第8章 微服务的日志管理和监控
8.1 日志管理的挑战
8.2 集中式日志管理方案
8.3 日志管理方案的选取
- 8.3.1 云服务
- 8.3.2 现成的方案
- 8.3.3 集成一流的组件
- 8.3.4 自定义日志管理方案的实现
- 8.3.5 用Spring Cloud Sleuth实现分布式追踪
8.4 监控微服务
- 8.4.1 微服务监控的挑战
- 8.4.2 监控工具
- 8.4.3 监控微服务依赖
- 8.4.4 用Spring Cloud Hystrix 实现微服务容错
- 8.4.5 用Turbine聚合ystrix流
8.5 使用数据库做数据分析
8.6 小结
第9章 用Docker容器化微服务
9.1 BrownField公司PSS微服务的不足之处
9.2 什么是容器
9.3 虚拟机和容器的区别
9.4 容器的优势
9.5 微服务和容器
9.6 Docker简介
Docker的关键组件
9.7 将微服务部署到Docker中
9.8 在Docker上运行Rabbi tMQ
9.9 使用Docker注期表
- 9.9.1 设置Docker lfub
- 9.9.2 将微服务发布到Docker Hub
9.10 微服务上云
在AWS EC2上安装Docker
9.11 在EC2上运行BrownFiled公司的微服务
9.12 容器化的未来
9.13 小结
第10章 用Mesos和lMarathon扩展容器化的微服务
10.1 微服务扩容
- 10.1.1 理解自动扩容
-
10.1.2 缺失的部分
10.2 容器编排
- 10.2.1 为什么容器编排很重要
- 10.2.2 容器编排是什么
- 10.2.3 容器编排和微服务的关系
- 10.2.4 容器编排和虚拟化的关系
- 10.2.5 容器编排方案
10.3 用Mesos和lMarathon实现容器编排
深入Mesos
10.4 用IxOS实现Mesos和Mara thon
10.5 为BrownField公司的微服务实现Mesos和Marathon
- 10.5.1 安装Mesos. Marathon及相关组件
- 10.5.2 运行Mesos和lMarathon
10.6 准备部署BrownField公司的PSS微服务
部署BrownField公司的PSS服务
10.7 小结
第 11 章 微服务开发生命周期
11.1 微服务开发的实践要点
- 11.1.1 理解业务动机和价值
- 11.1.2 从项目开发到产品开发的观念转变
- 11.1.3 选择正确的开发理念
- 11.1.4 使用最小可行产品的概念
- 11.1.5 克服遗留热点
- 11.1.6 建立自组织的团队
- 11.1.7 构建自服务云
- 11.1.8 构建一套微服务生态系统
- 11.1.9 以Dev0ps实践贯穿微服务开发的生命周期
- 11.1.10 价值驱动计划
-
11.1.11 持续监控和反馈
11.2 自动化开发周期
- 11.2.1 开发
- 11.2.2 集成
- 11.2.3 测试
- 11.2.4 部署
- 11.2.5 监控和反馈
- 11.2.6 配置管理
- 11.2.7 微服务开发治理、参考架构和类库
11.3 小结