课程概要
学习本课程,学员将会对微服务、Spring Cloud、Docker、Kubernetes有一个系统、全面的认识。通过学习,学员将能掌握相关的知识体系,并能够投入到项目实战中去。
本课程采用实战优先的原则,讲解如何从0开始编写基于Spring Boot/Cloud开发的微服务,并逐步解决项目中的问题,最终实现一个高可用的微服务架构;随后,讲解如何将应用容器化、如何实现资源的合理分配、并将应用部署到Kubernetes平台。
本课程使用目前最新的Spring Cloud Hoxton SR6、Docker 20.03、Kubernetes 1.14进行讲解。
课程目标
理解微服务是什么、解决了什么问题、设计原则、拆分原则、最佳实践
深入理解Spring Cloud核心组件常见用法及扩展钩子,能够使用Spring Cloud开发微服务,并具备二次开发Spring Cloud的能力
深入理解Docker的核心概念及常用知识点,能够使用Docker常用命令、构建Docker容器,并将应用部署在Docker中
深入理解Kubernetes核心概念及常用知识点,能够在Kubernetes中部署应用,并具备解决问题的能力
传统设计微服务、开发微服务、部署微服务、交付微服务全流程
课程大纲
方向 | 内容安排 |
微服务架构及概述 | 架构的演进历程 微服务诞生背景 微服务架构的优点与挑战 微服务设计原则 微服务架构通览 |
Spring Boot必知必会 | Spring Boot是什么 使用Spring Initialzr快速创建应用 编写第一个Spring Boot应用 Spring Boot配置管理 Spring Boot Actuator |
方向 | 内容安排 |
Spring Cloud是什么 | Spring Cloud是什么 Spring Cloud版本与选择 服务提供者与服务消费者 |
服务注册与服务发现-Nacos | 什么是服务发现? Nacos简介与架构剖析 搭建Nacos Server Nacos领域模型 Nacos高可用 指定网卡 健康检 |
方向 | 内容安排 |
客户端侧负载均衡-Ribbon | Ribbon是什么 Ribbon组件详解 引入Ribbon后的架构演进 编写第一个Ribbon Client 使用代码自定义Ribbon的配置 使用配置自定义Ribbon的配置 Eager Load Ribbon扩展:筛选节点、控制流量 第二代客户端侧负载均衡器:Spring Cloud LoadBalancer |
声明式的HTTP客户端-Feign
| Feign简介 编写第一个Feign Client Feign组件详解 使用代码自定义Feign的配置 使用配置自定义Feign的配置 构造多参数请求 |
方向 | 内容安排 |
断路器-Hystrix | 雪崩效应是什么? 常用容错手段 Hystrix是什么 为项目整合Hystrix Feign使用Hystrix 使用FallbackFactory检查回退原因 启用/禁用Hystrix Hystrix监控 Hystrix Dashboard可视化监控数据 Turbine是什么 使用Turbine聚合监控数据 消息中间件模式 其他容错组件对比与选择 如何切换到其他容错组件? |
API Gateway-Zuul | 网关的必要性 Zuul是什么 编写Zuul Server 路由配置详解 文件上传 过滤器详解 Zuul监控与排错 容错与回退 高可用Zuul |
API Gateway-Spring Cloud Gateway | Spring Cloud Gateway是什么? Spring Cloud Gateway上手 Spring Cloud Gateway核心概念 Spring Cloud Gateway架构剖析 路由谓词工厂详解 过滤器工厂详解 全局过滤器详解 扩展Spring Cloud Gateway |
如何自研网关 | 网关基本能力分析 实现方案 编码 |
配置中心-Spring Cloud Config
| 为什么要使用配置中心 Spring Boot配置管理 Spring Cloud Config简介 编写ConfigServer 集成ConfigClient Git仓库配置详解 配置属性加解密 配置手动刷新 自动刷新-SpringCloud Bus Config Server与Eureka配合使用 安全 高可用 |
配置中心-Nacos | 为什么要使用配置中心 使用Nacos管理配置 如何实现配置回滚与配置刷新 引导上下文 如何实现应用配置共享 Nacos数据持久化 配置管理最佳实践 Nacos配置管理剖析 |
微服务拆分方法 | 领域驱动设计是什么? 使用领域驱动设计拆分微服务 领域驱动设计代码展示 By name.拆分方法 By verb.拆分方法 如何衡量拆分是否合理? |
如何从传统架构迁移到微服务? | 迁移如何规划? 如何寻找可拆分的模块 绞杀者模式 修葺者模式 如何验证迁移成果? 如何拆分数据库 |
调用链监控-Spring Cloud Sleuth | 为什么要实现调用链跟踪 简介 基本概念 入门示例:整合Sleuth Sleuth配合ELK Zipkin简介 Zipkin Server编写 Zipkin UI 微服务整合Zipkin 使用Elasticsearch作为Zipkin Server的后端存储 |
Docker安装 | Docker简介 安装Docker 镜像加速器 Docker常用命令 |
Dockerfile详解 | lDockerfile指令详解 Dockerfile最佳实践 |
镜像管理 | Docker Hub Docker Registry 第三方Docker Registry:Nexus/Habor |
Docker工具 | 使用Maven构建Docker镜像 可视化管理工具 |
Docker Compose | 安装Compose 快速入门 docker-compose.yml常用命令 docker-compose常用命令 在生产环境中使用Docker Compose 使用Docker Compose快速伸缩应用 实战:将Spring Boot快速以容器形式交付 |
Kubernetes入门 | 容器编排是什么?为什么要使用Kubernetes? 安装Kubernetes Kubernetes架构与基本组件 Kubernetes命令详解 |
Kubernetes详解 | Pod详解 RC详解 RS详解 Deployment详解 ReplicaSet详解 Job详解 Secret详解 Service详解 存储详解 StatefulSet 每个模型都会以:是什么、解决什么问题、如何使用、最佳实践的形式进行讲解 |
Kubernetes资源调度 | 资源分配 扩容与缩容:手动方式(kubectl scale)、HPA方式等 亲和性调度 污点与容忍 升级和回滚 Kubernetes周边设施 |
Produce-Ready | 基于Spring Cloud快速开发脚手架 将应用部署到Kubernetes 更加傻瓜化的操作 最佳实践总结 |