| 第一部分 基础知识 | 
| 第一单元  微服务架构概述 | 什么是微服务架构 微服务架构是敏捷开发的必然结果
 1.  单体应用的优势与面临的挑战
 案例:演示淘宝在系统不断发展的过程中面临的难题
 许多系统在不断发展过程中越来越庞大带来的问题
 2.  康威定律与人月神话
 烟囱式的功能团队导致烟囱式的应用
 人员越来越多、沟通越来越困难、工作效率越来越低
 3.  未来快速变化的市场需要敏捷团队
 更快地交付、更快地反馈、更快地产生价值
 敏捷化的开发团队呼唤微服务架构
 微服务是未来互联网发展的必然结果
 1.  互联网的发展及其面临的挑战
 案例:分析淘宝近十年的发展及其面临的挑战
 互联网在面临横向扩展、服务隔离等问题的局限
 2.  微服务能够更好地解决互联网问题
 分析传统架构在解决互联网问题时采用的办法
 讲解微服务架构应当是什么样子
 剖析微服务架构在解决诸多互联网问题时的思路
 微服务架构给测试与运维带来的挑战
 1.  微服务架构给测试带来的挑战
 微服务架构与持续集成
 微服务架构采用的测试工具
 2.  微服务架构给运维带来的调整
 微服务架构与DevOps
 微服务架构的管理与发布过程
 | 
| 第二单元  准确认识微服务 | 关于微服务的误解 1. 微服务 vs.  SOA
 案例:SOA在项目中的应用
 案例:微服务在项目中的应用
 微服务与SOA的联系与差异
 2. 微服务架构的本质
 
 
由服务组件组成的系统按照业务而不是技术来组织服务做全生命周期的产品而不是项目智能端点与通道扁平化去中心化治理去中心化数据管理自动化运维(DevOps)故障恢复与容错演化式设计 案例:演示出租车调度系统的微服务设计过程 | 
| 第二部分 微服务架构设计 | 
| 第三单元  微服务常用架构 | 最简版的微服务架构 1. 服务注册与发现
 2. 服务网关
 3.  微服务
 4. 配置管理
 微服务常用的技术框架
 1. Spring Cloud简介
 2. Spring Boot简介
   | 
| 第四单元  服务注册与发现 | 服务注册与发现的概念与作用 实现服务注册与发现的方案
 1.  Dubbo的简介
 2. Zookeeper的简介
 3. Netflix Eureka的简介
 Spring Cloud  Eureka方案
 1. Spring Cloud Eureka的系统架构
 2. Eureka Server的设计
 3. Eureka  Client的设计
 4. 服务发现的设计
 
 
使用ribbon的设计使用feign的设计 5. 熔断机制断路器设计模式线程池隔离、优雅降级与熔断Hystrix的断路器设计 6. 高可靠设计与Eureka集群练习:使用Eureka构建微服务系统
 1. Eureka  Server
 2. Eureka Client
 3. 使用ribbon/feign进行微服务间调用
 4.  设计熔断器
 | 
| 第五单元  微服务层的设计 | 微服务架构的6种设计模式 1.  聚合模式
 互联网纵向切分在微服务的实现
 纵向切分应当注意的设计问题
 避免跨库关联查询的设计
 采用分布式事务解决跨库的事务操作
 2.  代理模式
 互联网横向切分与读写分离在微服务的实现
 3. 链式模式
 复杂应用场景与生产流水线的设计思路
 4. 分支模式
 5.  数据共享模式
 6. 异步消息模式
 案例:微服务实现异步化操作
 微服务的粒度
 1. 微服务的拆分原则
 2. 微服务的拆分方式
  微服务设计的反模式 1. 太多数据迁移
 2. 数据共享反模式
 3. 频繁交互反模式
 探讨:如何解决微服务接口太多的问题
 | 
| 第六单元 服务网关 | 服务网关在微服务架构中的作用 1.  多渠道用户接入
 微服务前后端分离的架构设计
 2. 微服务的负载均衡
 负载均衡的难题:Session管理
 3.  路由网关(zuul)
 蓝绿发布、滚动发布、灰度发布与金丝雀发布
 权限验证与安全保障
 路由网关的设计实现
 4.  流量控制与节流
 练习:设计服务网关、路由网关与断路器
 
 | 
| 第七单元 Docker与容器技术 | Docker简介 1. Docker vs.  虚拟化
 2. Docker的运行方式
 3.  Docker的基本操作
 将微服务部署到Docker中
 演练:微服务在Docker中的部署过程
 练习:模拟构建一个微服务系统
 
   | 
| 第八单元  配置管理与DevOps | DevOps简介 1. 微服务为什么需要DevOps
 2.  微服务的测试过程
 3. 微服务的发布过程
 微服务配置中心
 1. Spring Cloud Config的配置过程
 2. Spring  Cloud Config的发布过程
 微服务的分布式运维
 1. Kubernetes简介
 2.  用Kubernetes进行分布式运维
 探讨:如何构建一个微服务运营平台
 | 
| 第三部分 微服务的系统设计 | 
| 第九单元  领域驱动设计 | 所有软件企业不得不面对的问题 1.  我们现在面对的是快速变化的时代
 2.  软件研发却出现了问题:
 变更越频繁,代码质量下降越快
 案例:演示电商网站付款功能代码质量下降的过程
 3.  揭示软件退化的根源
 案例:演示软件退化的过程与高质量设计的过程
 深度解读高内聚与单一职责原则
 领域驱动设计
 1.  软件变更过程中的设计难题
 2. 领域驱动的设计思想
 案例:重新演练电商网站付款功能的变更过程
 第一个版本的领域模型与设计
 
 
构建用例模型构建领域模型构建领域事件 第一次变更的分析设计过程演示领域分析不断深入的过程演示领域驱动指导软件变更的过程 第二次变更与两顶帽子的设计方式第三次变更与限界上下文
聚合、工厂、仓库的设计限界上下文与微服务 3. 领域驱动的设计实现贫血模型 vs.  充血模型
 领域驱动在传统架构中的实现
 领域驱动在微服务架构中的实现
 在微服务中使用领域事件
 1. 认识领域事件
 2.  事件风暴(Event Storming)
 3. 聚合、聚合根及其应用
 4. 工厂、仓库及其设计实现
 5.  限界上下文与微服务
 案例:智慧诊疗系统的领域驱动过程
 软件架构如何支持领域驱动
 1.  架构调整不是件简单的事儿
 如何实现业务领域层与技术框架的解耦
 如何简化业务实现的过程
 2.  架构设计如何支持领域驱动
 增删改如何支持领域驱动
 查询如何支持领域驱动
 3.  微服务架构如何支持领域驱动
 案例:一个简单、易于开发的微服务架构
 如何实现前端微服务化的设计
 | 
| 第十单元  传统架构的微服务转型 | 传统架构微服务转型的过程 1.  技术转型
 准备工作:Maven→Spring boot
 整理分层:MVC层与BUS层的分离
 建立微服务:注册中心、服务网关与微服务
 2.  业务拆分
 构建领域模型与限界上下文
 业务与数据库的纵向切分
 练习:将一个传统架构的软件改造成微服务
 初创型企业的微服务建设过程
 案例:某智慧医疗系统的建设过程
 1.  系统的建设规划
 2. 系统的分析设计过程
 3. 微服务架构设计与对外接口
 4.  微服务运营平台的建设
 成熟型企业开展微服务的思路
 1. 成熟企业开展微服务的难题
 2. 记录型系统 vs. 交互型系统
 3.  在混合云中构建交互型系统
 案例:某金融企业向微服务转型的过程
  大数据+微服务的转型过程 案例:某风控系统的大数据+微服务的转型过程
 1. 该风控系统的背景介绍
 2.  互联网转型带来的机遇与挑战
 3. 后端大数据的转型过程
 4. 前端微服务的转型过程
 5.  构建风险分析模型的AppStore平台
 探讨:大数据如何与微服务相结合
 |