课程背景
微服务是一种分布式系统架构解决方案,推动细粒度服务的使用,这些服务协同工作,且每个服务都有自己的生命周期。因为微服务主要围绕业务领域建模,所以避免了由传统的分层架构引发的很多问题。微服务也整合了过去十年来的新概念和技术,因此得以避开许多面向服务的架构中的陷阱。
随着 RESTful、云计算、DevOps、持续交付等概念的深入人心,微服务架构逐渐成为系统架构的一个代名词。那么微服务是否是业界期待已久的企业架构解决方案呢?在微服务架构的实施过程中存在着怎样的困难和挑战呢?在过去几年的时间里,我们一直在探索和实践,将其复杂的业务支撑系统逐渐演进为基于微服务架构的系统。这期间也经历了从微服务的理论认识,到小范围实践、迭代,再到多个基于微服务构建的项目已经成功上线的过程。在感受微服务为开发实践、测试策略、部署、运维等带来改变的同时,也切身体会到使用微服务架构,对系统灵活性、可伸缩性方面的提升,以及对团队应对变化能力的提升。鉴于此,本课程从实践的角度出发,首先阐述了单块架构存在的弊端以及微服务的理论基础。接着通过实践部分,让读者能够体验从零开始搭建第一个微服务的过程,包括代码静态检查、基础设施构建、 Docker映像构建及部署、持续交付流水线、服务的日志聚合以及监控和告警。随后,探讨在微服务的实践过程中所积累的经验,包括基于 HAL的通信机制、消费者驱动的测试,并通过一个真实的案例,帮助读者更好地理解微服务架构所带来的灵活性、易扩展性和独立性。
微服务是一个快速发展的主题。尽管它不是一个新的想法(虽然这个词本身是),但世界各地的人们所获取的经验以及新技术的出现正在对如何使用它产生深远的影响。因为其变化的节奏很快,所以本课程更加关注理念,而不是特定技术,因为实现细节变化的速度总是比它们背后的理念要快得多。而且,我完全相信几年后我们会对微服务适用的场景了解更多,也会知道如何更好地使用它。
随着移动互联时代的到来,数据量急剧增加,并发量也变得越来越有挑战, 企业在规划和设计分布式系统的总体架构,涉及到方方面面的知识点,可选的方案也很多,如何在各种各样,纷繁复杂的技术中构建最适合企业的分布式系统架构(Distributed Architecture),变成了一件极具挑战的事情。
一个好的分布式架构可以以最低的成本、更灵活的方式,满足企业用户需求。相反,糟糕的架构,不但花费了重金,而且架构过于复杂、过于笨重,线上故障不断,架构灵活性差,阻碍业务的发展。传统的 Monoliths 等架构已无法满足业务持续快速创新的需求, 分布式系统架构(Distributed Architecture)应运而生。相信大家对分布式系统架构都有一定的认识,但对分布式系统架构如何在项目中落地实践,缺乏一些经验。
该课程适应于各类技术人员.细粒度的微服务架构包含了很多方面的内容,所以本课程涉及范围很广,适用于对系统的设计、开发、部署、测试和运维感兴趣的人们。对于那些已经走上更细粒度架构之路的人,无论是开发新应用,还是拆分现有的单块系统,都会因课程里很多的实用建议而受益。对于想要了解微服务方方面面的人,也可以帮助你确定微服务是否适合你。
课程时长
2天(6小时/天)
课程大纲
课程内容安排(课前沟通内容,进行定制)
主题 | 培训内容 | 备注 |
第1单元 微服务架构概述 | 内容一:微服务架构诞生—为什么出现微服务架构 1. 单块架构及其面临的挑战 2. 分层应用架构 3. 单块架构特点 4. 单块架构面临的挑战 5. 通过某传统ERP系统为案例分析上线后问题 内容二:微服务架构 1. 为什么需要微服务架构 2. 如何解决传统应用架构的问题 3. 微服务架构是什么 4. 微服务架构概念 5. 微服务架构参考架构模式 6. 通过分析多个微服务架构案例,了解微服务架构的参考模式 | |
第2单元 SpringClould概述 | 内容二:微服务架构与云架构--Spring Cloud平台 1. 云计算平台架构 2. 为什么选择Spring Cloud 3. Spring Cloud 4. 服务治理:Spring Cloud Eureka 5. 客户端负载均衡:Spring Cloud Ribbon 6. 服务容错保护:Spring Cloud Hystrix 7. 声明式服务调用:Spring Cloud Feign 8. 分布式配置中心:Spring Cloud Config 9. 消息总线:Spring Cloud Bus 10. 多个基于SpringBoot和SpringCloud云架构,谈微服务和云架构 | |
第3单元 基于Spring Boot微服务开发基础 | 内容一:SpringBoot微服务架构开发实现概述 1. Spring Boot概述 2. 运用Spring Boot 3. 部署Spring Boot应用程序 4. Spring Boot 的数据访问 5. Spring Boot 企业级开发 6. Spring Boot 开发部署与测试 7. 多个基于SpringBoot实际项目的架构分析(为何这样设计/优点/缺点/当初的考虑) 内容二:Spring Boot的Web应用开发 1. Spring Boot的Web应用开发 2. Spring Boot自动配置Web 3. Spring Boot对Web开发的支持 4. 视图层技术 5. 配置JSON和XML数据转换 6. 选择Thymeleaf模板引擎 7. 文件上传 8. 过滤器、监听器和拦截器 9. @ControllerAdvice和@ExceptionHandler的使用 10. Spring Boot自动配置Web 11. 内嵌式Web容器 内容三:Spring Boot整合持久层技术 1. 默认连接池HikariCP 2. 配置MyBatis框架 3. 配置使用Spring Data JDBC 4. 配置使用Spring Data JPA 5. 事务管理配置 6. Spring Boot整合NoSQL 7. 集成Redis数据库 8. 集成MongoDB数据库 9. Spring Boot整合Cache缓存 10. EhCache缓存技术 11. Redis缓存技术 内容四:Spring Boot构建RESTful风格 1. RESTful简介 2. Spring Data REST实现REST服务 3. RESTful服务的相关配置 4. Swagger生成API文档工具 内容五:Spring Boot整合消息服务 1. 消息中间件之RabbitMQ 2. 消息队列 3. 消息中间件之ActiveMQ 内容六:Spring Security安全管理 1. Spring Security基本配置 2. 用户认证 3. Spring Security高级配置 4. Spring Security OAuth 2.0简介 内容七:Spring Boot开发案例 1. 网上商城项目 2. 架构设计 3. 项目搭建 4. 模块实现 | |
第4单元 微服务架构基础框架和平台 | 内容一:微服务基础\平台 1. 微服务架构设计之开发框架选择(Spring Boot); 2. 微服务架构设计之容器选择(Docker); 3. 微服务架构设计之服务注册选择(Zookeeper、Etcd、Consul); 4. 微服务架构设计之服务网关选择(Nginx、Node.js、Netflix Zuul); 5. 微服务架构设计之自动化部署选择(Jenkins、GitLab CI); 6. 微服务的安全机制与OAuth2.0实现 7. 微服务架构设计之最佳实践案例; | |
第5单元 微服务注册与发现,服务路由,统一配置中心 | 内容一:微服务注册与发现 1. 为什么要服务注册 2. 服务注册实现方式 3. 使用NetflixEureka/SpringCloud实现服务注册 4. 使用NetflixRibbon/SpringCloud实现客户端负载均衡 5. 为什么要服务发现 6. 服务发现的实现方式 7. 使用Spring和Netflix Eureka进行服务发现实战 内容二:微服务负载均衡和路由,容错 1. 负载均衡 2. 容错 3. 服务路由 4. 微服务间的异步通信机制 5. Spring Clould 的Ribbon实现 内容三:分布式微服务统一配置中心 1. 管理配置(和复杂性) 2. 配置管理架构 3. 构建Spring Cloud配置服务器 4. 将Spring Cloud Config与Spring Boot客户端集成 5. 分布式配置中心——携程Apollo 6. 携程apollo优点 7. apollo架构 8. Apollo分布式配置中心部署 9. Apollo分布式配置中心最佳实践 | |
第6单元 微服务网关和过载保护 | 内容一:微服务网关—Zuul 1. 使用Spring Cloud和Zuul进行服务路由 2. 什么是服务网关 3. Spring Cloud和Netflix Zuul简介 4. 在Zuul中配置路由 5. 动态重新加载路由配置 6. 构建第 一个生成关联ID的Zuul前置过滤器 7. 构建动态路由过滤器 8. Zuul网关最佳实践 内容二:微服务断路器—Hystrix 1. 什么是客户端弹性模式 2. 客户端负载均衡模式 3. 断路器模式 4. 后备模式 5. 舱壁模式 6. 使用Hystrix实现断路器 7. 对组织微服务的调用超时 8. 定制断路器的超时时间 9. 线程上下文和Hystrix 10. Hystrix最佳实践 | |
第7单元 微服务交付与测试 | 内容一:微服务测试-持续集成与测试 1. 微服务测试 2. 实现服务测试 3. 端到端测试的缺点 4. 跨功能的测试 5. 微服务的测试策略与PACT测试 6. 微服务测试案例分析 内容二:微服务发布 1. 微服务架构如何代码控制? 2. 微服务架构自动化测试? 3. 微服务架构如何预先发布验证? 4. 微服务架构如何灰度发布? 5. 微服务架构如何自动化发布? 6. 使用Docker发布服务; 7. .使用Docker-Compose在开发环境中运行多个服务 8. 微服务架构设计软件质量保证最佳实践是什么 | |
第8单元 微服务分布式事务和日志监控 | 内容一:微服务分布式事务 1. 本地事务-JDBC实现 2. XA和两阶段事务协议 3. J2EE分布式事务 4. Spring框架与分布式事务 5. CAP原则和BASE原则 6. 微服务事务一致性实现策略 7. TCC与分布式微服务架构事务 8. 分布式微服务架构最佳实践 内容二:大型微服务分布式日志 1. 大数据日志系统的构建 2. 开源日志框架的原理分析与应用实践 3. ELK系统的构建与使用 4. Elasticsearch 5. Logstash 6. Kibana 7. 大数据日志系统的原理与设计 8. 日志系统的容量和性能评估 内容三:微服务分布式跟踪系统—大众点评CAT 1. 基于调用链的服务治理系统的设计与实现 2. 调用链跟踪的原理 3. 分布式系统的远程调用过程 4. Google Dapper实现 5. 大众点评CAT案例分析 6. CAT实现原理 7. CAT部署策略 8. CAT最佳实践 |