课程简介
本课程将会用许多的真实案例讲解,什么是微服务,如何用微服务架构我们的系统,并用工作坊的形式,实际带领学员去架构微服务,在动手中获得知识。
此外,微服务只是工具,只学会工具不行,还要学会如何去运用。微服务背后的理论基础是单一职责原则、领域驱动设计。因此,本课程会带领学员站在更深的层次,去深入领悟单一职责原则的本质,深入学习领域驱动设计的过程,以及如何运用它们在复杂的系统中提高代码质量、应对需求变更,并以此为基础将需求转换为微服务系统的设计。
课程的最后将更加务实地探讨一些在微服务转型过程中大家普遍关心的问题:传统架构如何转型微服务?初创型企业如何建设微服务?成熟型企业开展微服务的思路,以及微服务如何与大数据相结合。
目标收益
培训对象
中高级工程师、企业架构师、软件设计师、技术决策/解决方案人员等。
课程大纲
第一部分 基础知识 第一单元 微服务架构概述 |
什么是微服务架构 微服务架构是敏捷开发的必然结果 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.ETCD的简介 4.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.聚合模式 案例:电商网站购物功能的设计 微服务前后端分离的设计 分布式事务的两阶段提交 TCC方案与阿里GTS 采用分布式事务解决跨库的事务操作 案例:电商网站下单服务的设计 单一职责原则与领域驱动设计 互联网纵向切分在微服务的实现 纵向切分应当注意的设计问题 避免跨库关联查询的设计 2.代理模式 案例:电商网站支付功能的设计思路 案例:电商网站多渠道支付的微服务实现 3.链式模式 4.分支模式 5.数据共享模式 6.异步消息模式 案例:12306的异步化操作 案例:电商网站异步化操作的微服务实现 微服务的粒度 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命令与操作 3.Kubernetes管理界面 4.用配置文件在Kubernetes中部署微服务 演示:Git+Jenkins+docker+k8s的自动化分布式部署 |
第三部分 微服务的系统设计 第九单元 领域驱动设计 |
所有软件企业不得不面对的问题 1.我们现在面对的是快速变化的时代 2.软件研发却出现了问题: 变更越频繁,代码质量下降越快 案例:演示电商网站付款功能代码质量下降的过程 3.揭示软件退化的根源 案例:演示软件退化的过程与高质量设计的过程 深度解读高内聚与单一职责原则 领域驱动设计 1.软件变更过程中的设计难题 2.领域驱动的设计思想 案例:重新演练电商网站付款功能的变更过程 第一个版本的领域模型与设计 构建用例模型 构建领域模型 构建领域事件 第一次变更的分析设计过程 演示领域分析不断深入的过程 演示领域驱动指导软件变更的过程 第二次变更与两顶帽子的设计方式 第三次变更与限界上下文 聚合、工厂、仓库的设计 限界上下文与微服务 3.领域驱动的设计实现 贫血模型 vs. 充血模型 领域驱动在传统架构中的实现 领域驱动在微服务架构中的实现 软件架构如何支持领域驱动 1.架构调整不是件简单的事儿 如何实现业务领域层与技术框架的解耦 如何简化业务实现的过程 2.架构设计如何支持领域驱动 增删改如何支持领域驱动 查询如何支持领域驱动 3.微服务架构如何支持领域驱动 案例:一个简单、易于开发的微服务架构 如何实现前端微服务化的设计 |
第十单元 传统架构的微服务转型 |
传统架构微服务转型的过程 1.技术转型 准备工作:Maven→Spring boot 整理分层:MVC层与BUS层的分离 建立微服务:注册中心、服务网关与微服务 2.业务拆分 构建领域模型与限界上下文 业务与数据库的纵向切分 练习:将一个传统架构的软件改造成微服务 初创型企业的微服务建设过程 案例:某智慧医疗系统的建设过程 1.系统的建设规划 2.系统的分析设计过程 3.微服务架构设计与对外接口 4.微服务运营平台的建设 成熟型企业开展微服务的思路 1.成熟企业开展微服务的难题 2.记录型系统 vs. 交互型系统 3.在混合云中构建交互型系统 案例:某金融企业向微服务转型的过程 大数据+微服务的转型过程 案例:某风控系统的大数据+微服务的转型过程 1.该风控系统的背景介绍 2.互联网转型带来的机遇与挑战 3.后端大数据的转型过程 4.前端微服务的转型过程 5.构建风险分析模型的AppStore平台 探讨:大数据如何与微服务相结合 |
第一部分 基础知识 第一单元 微服务架构概述 什么是微服务架构 微服务架构是敏捷开发的必然结果 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.ETCD的简介 4.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.聚合模式 案例:电商网站购物功能的设计 微服务前后端分离的设计 分布式事务的两阶段提交 TCC方案与阿里GTS 采用分布式事务解决跨库的事务操作 案例:电商网站下单服务的设计 单一职责原则与领域驱动设计 互联网纵向切分在微服务的实现 纵向切分应当注意的设计问题 避免跨库关联查询的设计 2.代理模式 案例:电商网站支付功能的设计思路 案例:电商网站多渠道支付的微服务实现 3.链式模式 4.分支模式 5.数据共享模式 6.异步消息模式 案例:12306的异步化操作 案例:电商网站异步化操作的微服务实现 微服务的粒度 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命令与操作 3.Kubernetes管理界面 4.用配置文件在Kubernetes中部署微服务 演示:Git+Jenkins+docker+k8s的自动化分布式部署 |
第三部分 微服务的系统设计 第九单元 领域驱动设计 所有软件企业不得不面对的问题 1.我们现在面对的是快速变化的时代 2.软件研发却出现了问题: 变更越频繁,代码质量下降越快 案例:演示电商网站付款功能代码质量下降的过程 3.揭示软件退化的根源 案例:演示软件退化的过程与高质量设计的过程 深度解读高内聚与单一职责原则 领域驱动设计 1.软件变更过程中的设计难题 2.领域驱动的设计思想 案例:重新演练电商网站付款功能的变更过程 第一个版本的领域模型与设计 构建用例模型 构建领域模型 构建领域事件 第一次变更的分析设计过程 演示领域分析不断深入的过程 演示领域驱动指导软件变更的过程 第二次变更与两顶帽子的设计方式 第三次变更与限界上下文 聚合、工厂、仓库的设计 限界上下文与微服务 3.领域驱动的设计实现 贫血模型 vs. 充血模型 领域驱动在传统架构中的实现 领域驱动在微服务架构中的实现 软件架构如何支持领域驱动 1.架构调整不是件简单的事儿 如何实现业务领域层与技术框架的解耦 如何简化业务实现的过程 2.架构设计如何支持领域驱动 增删改如何支持领域驱动 查询如何支持领域驱动 3.微服务架构如何支持领域驱动 案例:一个简单、易于开发的微服务架构 如何实现前端微服务化的设计 |
第十单元 传统架构的微服务转型 传统架构微服务转型的过程 1.技术转型 准备工作:Maven→Spring boot 整理分层:MVC层与BUS层的分离 建立微服务:注册中心、服务网关与微服务 2.业务拆分 构建领域模型与限界上下文 业务与数据库的纵向切分 练习:将一个传统架构的软件改造成微服务 初创型企业的微服务建设过程 案例:某智慧医疗系统的建设过程 1.系统的建设规划 2.系统的分析设计过程 3.微服务架构设计与对外接口 4.微服务运营平台的建设 成熟型企业开展微服务的思路 1.成熟企业开展微服务的难题 2.记录型系统 vs. 交互型系统 3.在混合云中构建交互型系统 案例:某金融企业向微服务转型的过程 大数据+微服务的转型过程 案例:某风控系统的大数据+微服务的转型过程 1.该风控系统的背景介绍 2.互联网转型带来的机遇与挑战 3.后端大数据的转型过程 4.前端微服务的转型过程 5.构建风险分析模型的AppStore平台 探讨:大数据如何与微服务相结合 |