课程介绍
Spring是一个开源的轻量级的 Java 开发框架, 具有控制反转(IoC)和面向切面(AOP)两大核心。Java Spring 框架通过声明式方式灵活地进行事务的管理,提高开发效率和质量。
Spring 框架不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何 Java 应用都可以从 Spring 中受益。Spring 框架还是一个超级粘合平台,除了自己提供功能外,还提供粘合其他技术和框架的能力。
微服务是一种分布式系统架构解决方案,推动细粒度服务的使用,这些服务协同工作,且每个服务都有自己的生命周期。因为微服务主要围绕业务领域建模,所以避免了由传统的分层架构引发的很多问题。微服务也整合了过去十年来的新概念和技术,因此得以避开许多面向服务的架构中的陷阱。
随着 RESTful、云计算、DevOps、持续交付等概念的深入人心,微服务架构逐渐成为系统架构的一个代名词。那么微服务是否是业界期待已久的企业架构解决方案呢?在微服务架构的实施过程中存在着怎样的困难和挑战呢?在过去几年的时间里,我们一直在探索和实践,将其复杂的业务支撑系统逐渐演进为基于微服务架构的系统。这期间也经历了从微服务的理论认识,到小范围实践、迭代,再到多个基于微服务构建的项目已经成功上线的过程。在感受微服务为开发实践、测试策略、部署、运维等带来改变的同时,也切身体会到使用微服务架构,对系统灵活性、可伸缩性方面的提升,以及对团队应对变化能力的提升。鉴于此,本课程从实践的角度出发,首先阐述了单块架构存在的弊端以及微服务的理论基础。接着通过实践部分,让读者能够体验从零开始搭建第一个微服务的过程,包括代码静态检查、基础设施构建、 Docker映像构建及部署、持续交付流水线、服务的日志聚合以及监控和告警。随后,探讨在微服务的实践过程中所积累的经验,包括基于 HAL的通信机制、消费者驱动的测试,并通过一个真实的案例,帮助读者更好地理解微服务架构所带来的灵活性、易扩展性和独立性。
课程大纲
主题 | 培训内容 | 备注 |
第1单元 微服务架构概述 | 内容一:介绍基本的架构概念 1. 理解企业应用中的难题 2. 定义软件架构 3. 理解软件架构需求 4. 理解架构师的作用、责任和交付项目 5. 理解使用统一建模语言(UML)的架构模型 6. 理解架构与设计之间的差别和相似点
内容二:理解架构质量属性度量 1. 描述企业应用的系统性度量 2. 描述用于改善系统性度量的一般做法 3. 对服务质量(QoS)的要求划分优先级 4. 检查是否存在良好的机遇,并进行权衡 5. 结合实际项目案例分析,质量属性的权衡
内容三:微服务架构诞生—为什么出现微服务架构 1. 单块架构及其面临的挑战 2. 分层应用架构 3. 单块架构特点 4. 单块架构面临的挑战 5. 通过某传统ERP系统为案例分析上线后问题
内容四:微服务架构 1. 为什么需要微服务架构 2. 如何解决传统应用架构的问题 3. 微服务架构是什么 4. 微服务架构概念 5. 微服务架构参考架构模式 6. 通过分析多个微服务架构案例,了解微服务架构的参考模式 | |
第2单元 Spring设计模式应用 | 内容一:软件设计模式---模式到底是什么?价值在哪里? 1. 什么是模式 2. 为什么需要设计模式? 难道就为了面试吗? 3. 设计模式能够给我们带来什么? 4. 设计模式学习面临的困难和解决思路 5. 从了解模式到正确应用模式
内容二:面向对象设计原则(principles) 1. 依赖倒置原则(DIP) 2. 开放封闭原则(OCP) 3. 单一职责原则(SRP) 4. Liskov 替换原则(LSP) 5. 接口隔离原则(ISP)
内容三:Spring框架之中的设计模式应用 1. 策略模式 2. 模板方法模式 3. 迭代器模式 4. 观察者模式 5. 责任链模式 | |
第3单元 Spring架构- 业务逻辑 | 内容一:业务逻辑层的架构 1. 理解有关使用企业应用容器服务的价值 2. 描述用于实施域模型服务的架构选项 3. 描述用于实施域模型实体的架构选项 4. 分发域模型组件 5. 理解例外处理和日志的最佳做法
内容二:基于Spring业务逻辑层的架构 1. Spring轻量级容器技术 2. Spring的Ioc/DI技术 3. Spring的数据存取技术 4. Spring AOP技术 5. Sping事务管理 6. Spring在业务逻辑层的应用 7. Spring项目经验 | |
第4单元 Spring架构- | 1. 描述与企业信息系统(EIS)集成相关的难题 2. 描述集成层的角色 3. 描述EIS资源层 4. 回顾Java集成技术和最佳做法,以及和其他系统集成 5. 数据存取架构模式 6. 数据存取架构技术发展 7. 数据存取架构的策略 8. 数据存取层事务和连接管理模式
内容二:基于Spring数据存取技术-MyBatis 1. What is MyBATIS? 2. Working with mapped statements 3. Executing nonquery statements 4. Using advanced query techniques 5. Transactions 6. Using Dynamic SQL 7. Improving performance with caching
内容三:Spring的事务管理 1. 事务的概述 2. 本地事务和分布式事务JTA 3. 本地事务的管理的模式 4. 分布式事务管理的模式 5. 声明方式和编程方式事务管理 6. 事务,锁,并发 | |
第5单元-微服务架构设计开发实现—基于SpringBoot案例 | 内容一:微服务架构开发实现---SpringBoot 1. Spring Boot概述 2. 运用Spring Boot 3. Groovy与Spring Boot CLI 4. 在Spring Boot中使用Grails 5. 深入Actuator 6. 部署Spring Boot应用程序 7. Spring Boot 的数据访问 8. Spring Boot 企业级开发 9. Spring Boot 开发部署与测试 10. 多个基于SpringBoot实际项目的架构分析(为何这样设计/优点/缺点/当初的考虑) | |
第6单元-微服务架构设计开发实现—基于SpringCloud
| 内容一:微服务架构与云架构--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云架构,谈微服务和云架构 | |
1. 微服务架构设计之开发框架选择(Spring Boot); 2. 微服务架构设计之容器选择(Docker); 3. 微服务架构设计之服务注册选择(Zookeeper、Etcd、Consul); 4. 微服务架构设计之服务网关选择(Nginx、Node.js、Netflix Zuul); 5. 微服务架构设计之自动化部署选择(Jenkins、GitLab CI); 6. 微服务的安全机制与OAuth2.0实现 7. 微服务架构设计之最佳实践案例; | ||
第8单元--微服务注册与发现,服务路由,统一配置中心 | 内容一:微服务注册与发现 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分布式配置中心最佳实践 | |
第9单元--微服务网关和过载保护 | 内容一:微服务网关—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最佳实践 |