课程简介
习本课程,学员将会对微服务、Spring Cloud、Docker、Kubernetes有一个系统、全面的认识。通过学习,学员将能掌握Cloud Native(云原生)相关的知识体系,并能够投入到项目实战中去。
本课程采用实战优先的原则,讲解如何从0开始编写基于Spring Boot/Cloud开发的微服务,并逐步解决项目中的问题,最终实现一个高可用的微服务架构;随后,讲解如何将应用容器化、如何实现资源的合理分配、并将应用部署到Kubernetes平台。
课程目标
理解微服务是什么、解决了什么问题、设计原则、拆分原则、最佳实践
深入理解Spring Cloud核心组件常见用法及扩展钩子,能够使用Spring Cloud开发微服务,并具备二次开发Spring Cloud的能力
Docker、Kubernetes只会提一下,容器生态主要探讨Istio
课程大纲
主题 | 内容 | 时间 |
微服务架构及概述 | l 架构的演进历程 l 微服务诞生背景 l 微服务架构的优点与挑战 l 微服务设计原则 l 微服务架构通览 | 0.5h |
Spring Boot必知必会 | l 编写第一个Spring Boot应用 l Spring Boot配置管理 l Spring Boot Actuator | 0.5h |
Spring Cloud是什么 | l Spring Cloud是什么 l Spring Cloud版本、选择与注意点 l 服务提供者与服务消费者 | 0.5h |
服务注册与服务发现-Nacos | l 什么是服务发现? l 搭建Nacos Server l Nacos领域模型 l Nacos高可用 l 健康检查 l 经验分享:多个环境如何隔离? l 经验分享:微服务个数太多导致心跳压力如何解决? | 1h |
客户端侧负载均衡-Spring Cloud LoadBalancer | l Spring Cloud LoadBalancer是什么 l Spring Cloud LoadBalancer上手 l Spring Cloud LoadBalancer API l 扩展:编写自己的负载均衡规则 l 扩展:实现灰度发布 | 1h |
声明式的HTTP客户端-Feign | l Feign组件详解 l Feign配置自定义 l 构造多参数请求 l 扩展Feign:通用逻辑、日志处理、编解码器 | 1h |
断路器-Hystrix | l 常见容错方案 l 使用Sentinel实现容错 l Sentinel控制台 l 流控规则详解 l 降级规则详解 l 热点规则详解 l 系统规则详解 l 授权规则详解 l Sentinel与控制台通信原理剖析 l Sentinel API详解 l SentinelResource注解详解 l RestTemplate整合Sentinel l Feign整合Sentinel l 生产环境使用Sentinel l 扩展:实现区分来源 l 扩展:编写自己的容错组件 | 1.5h |
API Gateway-Spring Cloud Gateway | l Spring Cloud Gateway是什么? l Spring Cloud Gateway上手 l Spring Cloud Gateway核心概念 l Spring Cloud Gateway架构剖析 l 路由谓词工厂详解 l 过滤器工厂详解 l 全局过滤器详解 l 扩展Spring Cloud Gateway l 经验分享:网关的误区(谈谈网关与ESB) | 1h |
如何自研网关 | l 网关基本能力分析 l 实现方案 l 编码 这块主要是考虑目前Zuul已不维护;Spring Cloud Gateway很多团队Hold不住(基于Netty + Reactor + WebFlux,曲线有点高),所以提供额外的思路,如果不需要可以去掉 | 0.5h |
分布式事务-Seata | l Seata是什么 l 整合Seata l AT模式实现事务 l TCC模式实现事务 l Saga模式实现事务 l 基于MQ的分布式事务 l 经验:各种模式如何选择? l 经验:另一条路:放弃分布式事务 | 1.5h |
微服务安全 | l 微服务安全常用方案对比与选择 l 无状态VS有状态 l 处处安全方案与实现 l 外部无状态,内部有状态方案与实现 l 内部裸奔方案与实现 l 裸奔方案增强版与实现 l 分享:我司方案 l 基于Spring Cloud Gateway实现微服务安全 | 1.5h |
配置中心-Nacos | l 为什么要使用配置中心 l 使用Nacos管理配置 l 配置回滚与配置刷新 l 引导上下文 l 如何实现应用配置共享 l Nacos数据持久化 l Nacos配置管理剖析 l 经验分享:配置管理最佳实践 | 1h |
微服务拆分方法 | l 领域驱动设计是什么? l 使用领域驱动设计拆分微服务 l 领域驱动设计代码展示 l By name.拆分方法 l By verb.拆分方法 l 如何衡量拆分是否合理? | 1.5h |
如何从传统架构迁移到微服务? | l 迁移如何规划? l 如何寻找可拆分的模块 l 绞杀者模式与实现 l 修葺者模式与实现 l 数据库拆分与迁移方案 l 如何验证迁移成果? | 1.5h |
调用链监控 | l 以Skywalking为例演示一下,通过沟通发现团队短期之内可能比较难将类似工具投入生产,时间投入半小时 | 0.5h |
Docker与Kubernetes | l 带一下,聊聊K8s大致提供的能力(服务发现、资源调度等),为Istio做铺垫 | 0.5h |
Istio入门 | l Service Mesh是什么 l Istio是什么 l Istio架构及组件(Pilot、Mixer、Citadel、Sidecar(Envoy)) l Istio后期架构改进 l 上手Istio | 1h |
Istio常用功能 | l 应用接入Istio l Istio Dashboard l Grafana l Prometheus l Jaeger l Kiali | 1.5h 这块过一下Istio的核心功能 |
流量控制 | l 用Istio实现金丝雀部署 l 用Istio实现蓝绿部署 l 用Istio实现滚动部署 l 用Istio实现超时控制 l 用Istio实现重试 l 用Istio实现入口流量管理 l 用Istio实现熔断 l 用Istio实现流量复制 l 用Istio实现限流 | 2h 这块用Istio解决项目里面常见的问题 |
课程总结 | l 技术趋势发展洞见 l 课程总结与答疑 | 0.5h |