课程简介
深入解析微服务架构下的核心问题,包括服务拆分、治理、部署等关键知识点。结合实战案例,帮助学员掌握微服务架构的设计与实践,打造高效、稳定的微服务系统。
目标收益
掌握微服务架构的核心原理,提升系统设计与开发能力。
学会微服务治理策略,提高系统可维护性与可扩展性。
深入了解微服务部署与运维,为职业生涯增加竞争力。
培训对象
课程大纲
第1天 - 微服务框架与可观测性 0、序言:课程脉络、 技术理念与价值观 |
1.架构的道与术:什么是“术”?什么是“道”?道与术的关系? 2. 架构的3角关系: 技术架构、业务架构、组织架构 3. 技术架构 - 互联网的4高的区别与联系:高并发、高可用、高性能、高可靠 4. 业务架构 - 业务建模、DDD与微服务拆分 5. 组织架构 - 技术委员会/架构委员会的作用、康威定律 6. 大型互联网架构演进史 7. 架构与公司规模/公司发展阶段的匹配度小公司(几十/百)、中型公司(千)、大公司(万) 8. 技术的标准化:从“游击队”到“正规军”,从“小作坊”到“现代化工厂” 9. 技术深度与广度的平衡问题 10. T字型发展 |
第1单元 业界微服务框架选型与核心原理 |
1.业界微服务框架技术选型与原理: SpringCloud/Dubbo/Pigeon/OSP/grpc 2.基于http的RPC(http1.0/1.1/https/http2/http3) 3.基于tcp的RPC(epoll/Java NIO/Netty) 4.异步RPC:真异步 vs. 假异步 高阶内容:Streaming RPC,协程 |
第2单元 从SpringBoot进化到SpringCloud |
1. 基石 - Java3大特性:反射、注解、动态代理 2. 从SpringBoot到SpringCloud (1) 嵌入式Tomcat (2) SpringBoot Starter (3) SpringBoot扩展点与插件机制 (4) SpringBoot如何对注解发扬光大-自动化注解 3. SpringCloud与其它微服务框架的融合 (比如阿里的Dubbo,腾讯tRPC) |
第3单元 服务发现与负载均衡:Nacos/Ribbon/Feign |
1. 业界常用服务注册与发现框架(Zookeeper、Nacos、Consul、 Eureka、ETCD) 2.为什么ZK不适合作为服务发现/注册中心? 3.使用Redis作为服务发现/注册中心是否可行? 4.服务熔断与摘除机制:服务器摘除与客户端摘除 5. 注册中心与服务发现 - Nacos 6. 负载均衡 – Spring Cloud Ribbon 7. 远程调用- Spring Cloud Feign |
第4单元 微服务可观测性 - Logs |
1.云原生 – 什么叫“可观测性”? 可观测性的背景、思维理念 2.Logs:分布式日志采集与检索 (1)OpenTelemetry-Logs规范与协议 (2)服务端日志检索方案1:ELK (3)服务端日志检索方案2: Loki |
第5单元 微服务可观测性 - Trace |
Trace(分布式链路追踪) 1.OpenTelemetry-Trace规范与标准 2.服务端框架选项:Jaeger、ZipKin、SkyWalking 3.OpenTelemetry协议到Jaeger/Zipkin/Skywalking协议的转换 4.非侵入式上报: Java Instrumentation与字节码增强技术 5.侵入式上报 Spring Cloud Sleuth + OpenTelemery SDK |
第6单元 微服务可观测性 - Metrics |
1.Metrics:自动化指标采集与监控 (1)OpenTelemetry-Metrcis规范 (2)如何自动化埋点上报 2.Promethus (1)Promethus出现的背景 (2)Promethus的架构 (3)OpenTelemetry与Promethus的整合 3.进阶 – 从DevOps到AIOps |
第2天 - 微服务架构下的几大核心问题 第1单元 微服务拆分与 DDD领域划分 |
1.微服务拆分的N种拆法:微服务与宏服务 2.微服务拆分 与 领域划分是个什么关系? 3.如何用DDD指导微服务拆分? |
第2单元 微服务的容量规划、限流、熔断、降级 |
1.微服务的容量规划:预估方法与压测方法 2.微服务限流 3.微服务熔断、超时与重试 4.微服务降级 |
第3单元 服务间的分布式事务 |
0. 不会分布式事务,等于不会微服务 1. 日常工作中所有分布式事务场景: (1)DB与DB的分布式事务, (2)DB与MQ的分布式事务, (3)DB与服务的分布式事务, (4)服务与服务的分布式事务 2. 分布式事务解决方案对比与分析: 2PC, TCC, 最终一致性,1PC,对账 3. 分布式事务典型案例剖析:电商平台库存系统 4. Seata分布式事务框架与分布式数据库 |
第3天 – 云原生基础 – 从Docker到K8S 第1单元 Docker到底是个啥 |
1. 容器的本质 2. Docker - 容器和镜像是个什么关系 3. Docker技术对开发、测试、运维带来的变更 |
第2单元 Docker实战 |
1.Docker安装 2.案例1: 下载、运行tomcat镜像 3.案例2: 进入容器内部一探究竟 4.案例3: 制作war包镜像并运行 5. Docker命令总结 |
第3单元 Docker镜像的基本原理 - 镜像分层 |
1. 为什么会有镜像分层? 2. Linux堆叠文件系统原理:AuFS/OverlayFS 3. 镜像的分层结构 4. 镜像仓库:Docker Hub/Harbor/Nexus 3 |
第4单元 Dockerfile详解 |
1.容器和镜像,先有鸡,还是先有蛋? 2.Docker commit 3.Dockfile究竟用来干嘛 4.Dockfile常用命令详解 (RUN/CMD/ENTRYPOINT/EXPOSE/WORKDIR) 5.案例:tomcat war包的Dockfile 6.Maven插件与Docker集成 |
第5单元 Docker挂载Volume |
1. 为什么会有Volume、挂载这种概念?解决什么问题? 2. 创建Volume并挂载 3. 匿名Volume 4. Dockfile中挂载Volume |
第6单元 Docker背后的Linux原理 |
1. cggroups 2. namespace 3. 绑定挂载机制 4. 联合文件系统 |
第7单元 从Docker到K8S |
1. PaaS之战:从Docker到K8S 2. CNCF基金会 3. K8S架构介绍 4.K8S架构缺陷 – 各个大厂做的性能与高可用优化 5.什么叫容器编排? - K8S和Hadoop Yarn的类比 6. 虚拟机上云和容器上云的关键差别 |
第8单元 K8S编排的基本单位-Pod |
1.为什么引入Pod这个概念? Pod和容器的区别? 2. 3个实际案例阐释Pod的作用 案例1: c++共享内存 - 多进程通信 案例2:Java war包与Tomcat容器 案例3:微服务与日志收集Agent |
第9单元 K8S API入门 |
1.K8S Restful API 2.GVK 3.究竟什么叫Workload? 4.Workload的5种类型:Deployment/StatefulSet/DaemonSet/Job/CronJob 5.Workload和 Pod什么关系? |
第4天 云原生进阶 - 微服务与云原生融合 第1单元 微服务部署- K8S Deployment详解 |
1.Deployment yaml详解:Metadata与PodSpec/PodTemplate 2. Deployment发布策略:滚动发布和Recreate 3. 调度的亲和性与反亲和性: (1)node亲和性 (2)pod亲和性 (3)软/硬亲和性、反亲和性 |
第2单元 Pod进阶: 生命周期与状态 |
1. init Container 2. postStart Hook 3. 存活探针 4. 就绪探针 5. 启动探针 6. preStop Hook 7. Pod状态与Container状态 |
第3单元 Service: 微服务框架与K8S如何整合 |
1.K8S Service使用与原理: ClusterIP / NodePort / LoadBalancer /ExternelName 2. K8S Service与 微服务的service的关系 3. 如何把SpringCloud框架和K8S整合? |
第4单元 有状态应用:卷与存储、StatefulSet |
1. Volume 2. PV / PVC 3. Storage Class 4. Local PV 5. Projected PV(ConfigMap/Secret/Downward API) 6. StatefulSet与Deployment关键差异 |
第5单元 扩展K8S API与Operator |
1.CRD 与 CR 2.Controller与Operator 3.自定义API脚手架:KubeBuilder 4.自定义workload 典型案例: (1)原地升级(2)如何支持灰度发布? |
第6单元 富容器 – 遗留老系统上云 |
1.遗留老系统如何上云问题? 2.上云的2个模式:微服务上云、富容器上云 3.富容器的优缺点 4.富容器的实现原理 – 如何把容器当物理机用 (1)容器与1号进程 (2)自定义富容器Operator (3)原地升级发布 |
第7单元 运维标准化与PaaS平台 |
1.云的合规性问题:公有云/私有云 2.虚拟机跑容器 vs. 物理机跑容器 3.K8S集群的几种隔离模式 4.运维的挑战:多租户/多机房/多集群的管理问题 5. CI/CD工具与云平台的结合 6. 基于云的同机房/跨机房服务路由 7. 高阶:当云原生遇上异地多活/单元化 |
第8单元 容器网络 |
1.网络基本原理 – 交换机(2层网络) 与 路由器(3层网络) 2.Host网络模式 (1)Host网络模式原理 (2)Host网络模式局限性与解决办法 3.容器网络的引入 4.公有云:VPC与CIDR 5.隧道技术的基本原理 6.OverLay网络: 网络虚拟化 与 Vxlan 7.路由网络: flannel host-gw 8.UnderLay网络: VPC 9.容器网络的规划与技术选型 |
第1天 - 微服务框架与可观测性 0、序言:课程脉络、 技术理念与价值观 1.架构的道与术:什么是“术”?什么是“道”?道与术的关系? 2. 架构的3角关系: 技术架构、业务架构、组织架构 3. 技术架构 - 互联网的4高的区别与联系:高并发、高可用、高性能、高可靠 4. 业务架构 - 业务建模、DDD与微服务拆分 5. 组织架构 - 技术委员会/架构委员会的作用、康威定律 6. 大型互联网架构演进史 7. 架构与公司规模/公司发展阶段的匹配度小公司(几十/百)、中型公司(千)、大公司(万) 8. 技术的标准化:从“游击队”到“正规军”,从“小作坊”到“现代化工厂” 9. 技术深度与广度的平衡问题 10. T字型发展 |
第1单元 业界微服务框架选型与核心原理 1.业界微服务框架技术选型与原理: SpringCloud/Dubbo/Pigeon/OSP/grpc 2.基于http的RPC(http1.0/1.1/https/http2/http3) 3.基于tcp的RPC(epoll/Java NIO/Netty) 4.异步RPC:真异步 vs. 假异步 高阶内容:Streaming RPC,协程 |
第2单元 从SpringBoot进化到SpringCloud 1. 基石 - Java3大特性:反射、注解、动态代理 2. 从SpringBoot到SpringCloud (1) 嵌入式Tomcat (2) SpringBoot Starter (3) SpringBoot扩展点与插件机制 (4) SpringBoot如何对注解发扬光大-自动化注解 3. SpringCloud与其它微服务框架的融合 (比如阿里的Dubbo,腾讯tRPC) |
第3单元 服务发现与负载均衡:Nacos/Ribbon/Feign 1. 业界常用服务注册与发现框架(Zookeeper、Nacos、Consul、 Eureka、ETCD) 2.为什么ZK不适合作为服务发现/注册中心? 3.使用Redis作为服务发现/注册中心是否可行? 4.服务熔断与摘除机制:服务器摘除与客户端摘除 5. 注册中心与服务发现 - Nacos 6. 负载均衡 – Spring Cloud Ribbon 7. 远程调用- Spring Cloud Feign |
第4单元 微服务可观测性 - Logs 1.云原生 – 什么叫“可观测性”? 可观测性的背景、思维理念 2.Logs:分布式日志采集与检索 (1)OpenTelemetry-Logs规范与协议 (2)服务端日志检索方案1:ELK (3)服务端日志检索方案2: Loki |
第5单元 微服务可观测性 - Trace Trace(分布式链路追踪) 1.OpenTelemetry-Trace规范与标准 2.服务端框架选项:Jaeger、ZipKin、SkyWalking 3.OpenTelemetry协议到Jaeger/Zipkin/Skywalking协议的转换 4.非侵入式上报: Java Instrumentation与字节码增强技术 5.侵入式上报 Spring Cloud Sleuth + OpenTelemery SDK |
第6单元 微服务可观测性 - Metrics 1.Metrics:自动化指标采集与监控 (1)OpenTelemetry-Metrcis规范 (2)如何自动化埋点上报 2.Promethus (1)Promethus出现的背景 (2)Promethus的架构 (3)OpenTelemetry与Promethus的整合 3.进阶 – 从DevOps到AIOps |
第2天 - 微服务架构下的几大核心问题 第1单元 微服务拆分与 DDD领域划分 1.微服务拆分的N种拆法:微服务与宏服务 2.微服务拆分 与 领域划分是个什么关系? 3.如何用DDD指导微服务拆分? |
第2单元 微服务的容量规划、限流、熔断、降级 1.微服务的容量规划:预估方法与压测方法 2.微服务限流 3.微服务熔断、超时与重试 4.微服务降级 |
第3单元 服务间的分布式事务 0. 不会分布式事务,等于不会微服务 1. 日常工作中所有分布式事务场景: (1)DB与DB的分布式事务, (2)DB与MQ的分布式事务, (3)DB与服务的分布式事务, (4)服务与服务的分布式事务 2. 分布式事务解决方案对比与分析: 2PC, TCC, 最终一致性,1PC,对账 3. 分布式事务典型案例剖析:电商平台库存系统 4. Seata分布式事务框架与分布式数据库 |
第3天 – 云原生基础 – 从Docker到K8S 第1单元 Docker到底是个啥 1. 容器的本质 2. Docker - 容器和镜像是个什么关系 3. Docker技术对开发、测试、运维带来的变更 |
第2单元 Docker实战 1.Docker安装 2.案例1: 下载、运行tomcat镜像 3.案例2: 进入容器内部一探究竟 4.案例3: 制作war包镜像并运行 5. Docker命令总结 |
第3单元 Docker镜像的基本原理 - 镜像分层 1. 为什么会有镜像分层? 2. Linux堆叠文件系统原理:AuFS/OverlayFS 3. 镜像的分层结构 4. 镜像仓库:Docker Hub/Harbor/Nexus 3 |
第4单元 Dockerfile详解 1.容器和镜像,先有鸡,还是先有蛋? 2.Docker commit 3.Dockfile究竟用来干嘛 4.Dockfile常用命令详解 (RUN/CMD/ENTRYPOINT/EXPOSE/WORKDIR) 5.案例:tomcat war包的Dockfile 6.Maven插件与Docker集成 |
第5单元 Docker挂载Volume 1. 为什么会有Volume、挂载这种概念?解决什么问题? 2. 创建Volume并挂载 3. 匿名Volume 4. Dockfile中挂载Volume |
第6单元 Docker背后的Linux原理 1. cggroups 2. namespace 3. 绑定挂载机制 4. 联合文件系统 |
第7单元 从Docker到K8S 1. PaaS之战:从Docker到K8S 2. CNCF基金会 3. K8S架构介绍 4.K8S架构缺陷 – 各个大厂做的性能与高可用优化 5.什么叫容器编排? - K8S和Hadoop Yarn的类比 6. 虚拟机上云和容器上云的关键差别 |
第8单元 K8S编排的基本单位-Pod 1.为什么引入Pod这个概念? Pod和容器的区别? 2. 3个实际案例阐释Pod的作用 案例1: c++共享内存 - 多进程通信 案例2:Java war包与Tomcat容器 案例3:微服务与日志收集Agent |
第9单元 K8S API入门 1.K8S Restful API 2.GVK 3.究竟什么叫Workload? 4.Workload的5种类型:Deployment/StatefulSet/DaemonSet/Job/CronJob 5.Workload和 Pod什么关系? |
第4天 云原生进阶 - 微服务与云原生融合 第1单元 微服务部署- K8S Deployment详解 1.Deployment yaml详解:Metadata与PodSpec/PodTemplate 2. Deployment发布策略:滚动发布和Recreate 3. 调度的亲和性与反亲和性: (1)node亲和性 (2)pod亲和性 (3)软/硬亲和性、反亲和性 |
第2单元 Pod进阶: 生命周期与状态 1. init Container 2. postStart Hook 3. 存活探针 4. 就绪探针 5. 启动探针 6. preStop Hook 7. Pod状态与Container状态 |
第3单元 Service: 微服务框架与K8S如何整合 1.K8S Service使用与原理: ClusterIP / NodePort / LoadBalancer /ExternelName 2. K8S Service与 微服务的service的关系 3. 如何把SpringCloud框架和K8S整合? |
第4单元 有状态应用:卷与存储、StatefulSet 1. Volume 2. PV / PVC 3. Storage Class 4. Local PV 5. Projected PV(ConfigMap/Secret/Downward API) 6. StatefulSet与Deployment关键差异 |
第5单元 扩展K8S API与Operator 1.CRD 与 CR 2.Controller与Operator 3.自定义API脚手架:KubeBuilder 4.自定义workload 典型案例: (1)原地升级(2)如何支持灰度发布? |
第6单元 富容器 – 遗留老系统上云 1.遗留老系统如何上云问题? 2.上云的2个模式:微服务上云、富容器上云 3.富容器的优缺点 4.富容器的实现原理 – 如何把容器当物理机用 (1)容器与1号进程 (2)自定义富容器Operator (3)原地升级发布 |
第7单元 运维标准化与PaaS平台 1.云的合规性问题:公有云/私有云 2.虚拟机跑容器 vs. 物理机跑容器 3.K8S集群的几种隔离模式 4.运维的挑战:多租户/多机房/多集群的管理问题 5. CI/CD工具与云平台的结合 6. 基于云的同机房/跨机房服务路由 7. 高阶:当云原生遇上异地多活/单元化 |
第8单元 容器网络 1.网络基本原理 – 交换机(2层网络) 与 路由器(3层网络) 2.Host网络模式 (1)Host网络模式原理 (2)Host网络模式局限性与解决办法 3.容器网络的引入 4.公有云:VPC与CIDR 5.隧道技术的基本原理 6.OverLay网络: 网络虚拟化 与 Vxlan 7.路由网络: flannel host-gw 8.UnderLay网络: VPC 9.容器网络的规划与技术选型 |