課程簡介
深入解析微服務(wù)架構(gòu)下的核心問題,包括服務(wù)拆分、治理、部署等關(guān)鍵知識點(diǎn)。結(jié)合實(shí)戰(zhàn)案例,幫助學(xué)員掌握微服務(wù)架構(gòu)的設(shè)計(jì)與實(shí)踐,打造高效、穩(wěn)定的微服務(wù)系統(tǒng)。
目標(biāo)收益
掌握微服務(wù)架構(gòu)的核心原理,提升系統(tǒng)設(shè)計(jì)與開發(fā)能力。
學(xué)會微服務(wù)治理策略,提高系統(tǒng)可維護(hù)性與可擴(kuò)展性。
深入了解微服務(wù)部署與運(yùn)維,為職業(yè)生涯增加競爭力。
培訓(xùn)對象
課程大綱
第1天 - 微服務(wù)框架與可觀測性 0、序言:課程脈絡(luò)、 技術(shù)理念與價(jià)值觀 |
1.架構(gòu)的道與術(shù):什么是“術(shù)”?什么是“道”?道與術(shù)的關(guān)系? 2. 架構(gòu)的3角關(guān)系: 技術(shù)架構(gòu)、業(yè)務(wù)架構(gòu)、組織架構(gòu) 3. 技術(shù)架構(gòu) - 互聯(lián)網(wǎng)的4高的區(qū)別與聯(lián)系:高并發(fā)、高可用、高性能、高可靠 4. 業(yè)務(wù)架構(gòu) - 業(yè)務(wù)建模、DDD與微服務(wù)拆分 5. 組織架構(gòu) - 技術(shù)委員會/架構(gòu)委員會的作用、康威定律 6. 大型互聯(lián)網(wǎng)架構(gòu)演進(jìn)史 7. 架構(gòu)與公司規(guī)模/公司發(fā)展階段的匹配度小公司(幾十/百)、中型公司(千)、大公司(萬) 8. 技術(shù)的標(biāo)準(zhǔn)化:從“游擊隊(duì)”到“正規(guī)軍”,從“小作坊”到“現(xiàn)代化工廠” 9. 技術(shù)深度與廣度的平衡問題 10. T字型發(fā)展 |
第1單元 業(yè)界微服務(wù)框架選型與核心原理 |
1.業(yè)界微服務(wù)框架技術(shù)選型與原理: 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. 假異步 高階內(nèi)容:Streaming RPC,協(xié)程 |
第2單元 從SpringBoot進(jìn)化到SpringCloud |
1. 基石 - Java3大特性:反射、注解、動態(tài)代理 2. 從SpringBoot到SpringCloud (1) 嵌入式Tomcat (2) SpringBoot Starter (3) SpringBoot擴(kuò)展點(diǎn)與插件機(jī)制 (4) SpringBoot如何對注解發(fā)揚(yáng)光大-自動化注解 3. SpringCloud與其它微服務(wù)框架的融合 (比如阿里的Dubbo,騰訊tRPC) |
第3單元 服務(wù)發(fā)現(xiàn)與負(fù)載均衡:Nacos/Ribbon/Feign |
1. 業(yè)界常用服務(wù)注冊與發(fā)現(xiàn)框架(Zookeeper、Nacos、Consul、 Eureka、ETCD) 2.為什么ZK不適合作為服務(wù)發(fā)現(xiàn)/注冊中心? 3.使用Redis作為服務(wù)發(fā)現(xiàn)/注冊中心是否可行? 4.服務(wù)熔斷與摘除機(jī)制:服務(wù)器摘除與客戶端摘除 5. 注冊中心與服務(wù)發(fā)現(xiàn) - Nacos 6. 負(fù)載均衡 – Spring Cloud Ribbon 7. 遠(yuǎn)程調(diào)用- Spring Cloud Feign |
第4單元 微服務(wù)可觀測性 - Logs |
1.云原生 – 什么叫“可觀測性”? 可觀測性的背景、思維理念 2.Logs:分布式日志采集與檢索 (1)OpenTelemetry-Logs規(guī)范與協(xié)議 (2)服務(wù)端日志檢索方案1:ELK (3)服務(wù)端日志檢索方案2: Loki |
第5單元 微服務(wù)可觀測性 - Trace |
Trace(分布式鏈路追蹤) 1.OpenTelemetry-Trace規(guī)范與標(biāo)準(zhǔn) 2.服務(wù)端框架選項(xiàng):Jaeger、ZipKin、SkyWalking 3.OpenTelemetry協(xié)議到Jaeger/Zipkin/Skywalking協(xié)議的轉(zhuǎn)換 4.非侵入式上報(bào): Java Instrumentation與字節(jié)碼增強(qiáng)技術(shù) 5.侵入式上報(bào) Spring Cloud Sleuth + OpenTelemery SDK |
第6單元 微服務(wù)可觀測性 - Metrics |
1.Metrics:自動化指標(biāo)采集與監(jiān)控 (1)OpenTelemetry-Metrcis規(guī)范 (2)如何自動化埋點(diǎn)上報(bào) 2.Promethus (1)Promethus出現(xiàn)的背景 (2)Promethus的架構(gòu) (3)OpenTelemetry與Promethus的整合 3.進(jìn)階 – 從DevOps到AIOps |
第2天 - 微服務(wù)架構(gòu)下的幾大核心問題 第1單元 微服務(wù)拆分與 DDD領(lǐng)域劃分 |
1.微服務(wù)拆分的N種拆法:微服務(wù)與宏服務(wù) 2.微服務(wù)拆分 與 領(lǐng)域劃分是個什么關(guān)系? 3.如何用DDD指導(dǎo)微服務(wù)拆分? |
第2單元 微服務(wù)的容量規(guī)劃、限流、熔斷、降級 |
1.微服務(wù)的容量規(guī)劃:預(yù)估方法與壓測方法 2.微服務(wù)限流 3.微服務(wù)熔斷、超時(shí)與重試 4.微服務(wù)降級 |
第3單元 服務(wù)間的分布式事務(wù) |
0. 不會分布式事務(wù),等于不會微服務(wù) 1. 日常工作中所有分布式事務(wù)場景: (1)DB與DB的分布式事務(wù), (2)DB與MQ的分布式事務(wù), (3)DB與服務(wù)的分布式事務(wù), (4)服務(wù)與服務(wù)的分布式事務(wù) 2. 分布式事務(wù)解決方案對比與分析: 2PC, TCC, 最終一致性,1PC,對賬 3. 分布式事務(wù)典型案例剖析:電商平臺庫存系統(tǒng) 4. Seata分布式事務(wù)框架與分布式數(shù)據(jù)庫 |
第3天 – 云原生基礎(chǔ) – 從Docker到K8S 第1單元 Docker到底是個啥 |
1. 容器的本質(zhì) 2. Docker - 容器和鏡像是個什么關(guān)系 3. Docker技術(shù)對開發(fā)、測試、運(yùn)維帶來的變更 |
第2單元 Docker實(shí)戰(zhàn) |
1.Docker安裝 2.案例1: 下載、運(yùn)行tomcat鏡像 3.案例2: 進(jìn)入容器內(nèi)部一探究竟 4.案例3: 制作war包鏡像并運(yùn)行 5. Docker命令總結(jié) |
第3單元 Docker鏡像的基本原理 - 鏡像分層 |
1. 為什么會有鏡像分層? 2. Linux堆疊文件系統(tǒng)原理:AuFS/OverlayFS 3. 鏡像的分層結(jié)構(gòu) 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. 創(chuàng)建Volume并掛載 3. 匿名Volume 4. Dockfile中掛載Volume |
第6單元 Docker背后的Linux原理 |
1. cggroups 2. namespace 3. 綁定掛載機(jī)制 4. 聯(lián)合文件系統(tǒng) |
第7單元 從Docker到K8S |
1. PaaS之戰(zhàn):從Docker到K8S 2. CNCF基金會 3. K8S架構(gòu)介紹 4.K8S架構(gòu)缺陷 – 各個大廠做的性能與高可用優(yōu)化 5.什么叫容器編排? - K8S和Hadoop Yarn的類比 6. 虛擬機(jī)上云和容器上云的關(guān)鍵差別 |
第8單元 K8S編排的基本單位-Pod |
1.為什么引入Pod這個概念? Pod和容器的區(qū)別? 2. 3個實(shí)際案例闡釋Pod的作用 案例1: c++共享內(nèi)存 - 多進(jìn)程通信 案例2:Java war包與Tomcat容器 案例3:微服務(wù)與日志收集Agent |
第9單元 K8S API入門 |
1.K8S Restful API 2.GVK 3.究竟什么叫Workload? 4.Workload的5種類型:Deployment/StatefulSet/DaemonSet/Job/CronJob 5.Workload和 Pod什么關(guān)系? |
第4天 云原生進(jìn)階 - 微服務(wù)與云原生融合 第1單元 微服務(wù)部署- K8S Deployment詳解 |
1.Deployment yaml詳解:Metadata與PodSpec/PodTemplate 2. Deployment發(fā)布策略:滾動發(fā)布和Recreate 3. 調(diào)度的親和性與反親和性: (1)node親和性 (2)pod親和性 (3)軟/硬親和性、反親和性 |
第2單元 Pod進(jìn)階: 生命周期與狀態(tài) |
1. init Container 2. postStart Hook 3. 存活探針 4. 就緒探針 5. 啟動探針 6. preStop Hook 7. Pod狀態(tài)與Container狀態(tài) |
第3單元 Service: 微服務(wù)框架與K8S如何整合 |
1.K8S Service使用與原理: ClusterIP / NodePort / LoadBalancer /ExternelName 2. K8S Service與 微服務(wù)的service的關(guān)系 3. 如何把SpringCloud框架和K8S整合? |
第4單元 有狀態(tài)應(yīng)用:卷與存儲、StatefulSet |
1. Volume 2. PV / PVC 3. Storage Class 4. Local PV 5. Projected PV(ConfigMap/Secret/Downward API) 6. StatefulSet與Deployment關(guān)鍵差異 |
第5單元 擴(kuò)展K8S API與Operator |
1.CRD 與 CR 2.Controller與Operator 3.自定義API腳手架:KubeBuilder 4.自定義workload 典型案例: (1)原地升級(2)如何支持灰度發(fā)布? |
第6單元 富容器 – 遺留老系統(tǒng)上云 |
1.遺留老系統(tǒng)如何上云問題? 2.上云的2個模式:微服務(wù)上云、富容器上云 3.富容器的優(yōu)缺點(diǎn) 4.富容器的實(shí)現(xiàn)原理 – 如何把容器當(dāng)物理機(jī)用 (1)容器與1號進(jìn)程 (2)自定義富容器Operator (3)原地升級發(fā)布 |
第7單元 運(yùn)維標(biāo)準(zhǔn)化與PaaS平臺 |
1.云的合規(guī)性問題:公有云/私有云 2.虛擬機(jī)跑容器 vs. 物理機(jī)跑容器 3.K8S集群的幾種隔離模式 4.運(yùn)維的挑戰(zhàn):多租戶/多機(jī)房/多集群的管理問題 5. CI/CD工具與云平臺的結(jié)合 6. 基于云的同機(jī)房/跨機(jī)房服務(wù)路由 7. 高階:當(dāng)云原生遇上異地多活/單元化 |
第8單元 容器網(wǎng)絡(luò) |
1.網(wǎng)絡(luò)基本原理 – 交換機(jī)(2層網(wǎng)絡(luò)) 與 路由器(3層網(wǎng)絡(luò)) 2.Host網(wǎng)絡(luò)模式 (1)Host網(wǎng)絡(luò)模式原理 (2)Host網(wǎng)絡(luò)模式局限性與解決辦法 3.容器網(wǎng)絡(luò)的引入 4.公有云:VPC與CIDR 5.隧道技術(shù)的基本原理 6.OverLay網(wǎng)絡(luò): 網(wǎng)絡(luò)虛擬化 與 Vxlan 7.路由網(wǎng)絡(luò): flannel host-gw 8.UnderLay網(wǎng)絡(luò): VPC 9.容器網(wǎng)絡(luò)的規(guī)劃與技術(shù)選型 |
第1天 - 微服務(wù)框架與可觀測性 0、序言:課程脈絡(luò)、 技術(shù)理念與價(jià)值觀 1.架構(gòu)的道與術(shù):什么是“術(shù)”?什么是“道”?道與術(shù)的關(guān)系? 2. 架構(gòu)的3角關(guān)系: 技術(shù)架構(gòu)、業(yè)務(wù)架構(gòu)、組織架構(gòu) 3. 技術(shù)架構(gòu) - 互聯(lián)網(wǎng)的4高的區(qū)別與聯(lián)系:高并發(fā)、高可用、高性能、高可靠 4. 業(yè)務(wù)架構(gòu) - 業(yè)務(wù)建模、DDD與微服務(wù)拆分 5. 組織架構(gòu) - 技術(shù)委員會/架構(gòu)委員會的作用、康威定律 6. 大型互聯(lián)網(wǎng)架構(gòu)演進(jìn)史 7. 架構(gòu)與公司規(guī)模/公司發(fā)展階段的匹配度小公司(幾十/百)、中型公司(千)、大公司(萬) 8. 技術(shù)的標(biāo)準(zhǔn)化:從“游擊隊(duì)”到“正規(guī)軍”,從“小作坊”到“現(xiàn)代化工廠” 9. 技術(shù)深度與廣度的平衡問題 10. T字型發(fā)展 |
第1單元 業(yè)界微服務(wù)框架選型與核心原理 1.業(yè)界微服務(wù)框架技術(shù)選型與原理: 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. 假異步 高階內(nèi)容:Streaming RPC,協(xié)程 |
第2單元 從SpringBoot進(jìn)化到SpringCloud 1. 基石 - Java3大特性:反射、注解、動態(tài)代理 2. 從SpringBoot到SpringCloud (1) 嵌入式Tomcat (2) SpringBoot Starter (3) SpringBoot擴(kuò)展點(diǎn)與插件機(jī)制 (4) SpringBoot如何對注解發(fā)揚(yáng)光大-自動化注解 3. SpringCloud與其它微服務(wù)框架的融合 (比如阿里的Dubbo,騰訊tRPC) |
第3單元 服務(wù)發(fā)現(xiàn)與負(fù)載均衡:Nacos/Ribbon/Feign 1. 業(yè)界常用服務(wù)注冊與發(fā)現(xiàn)框架(Zookeeper、Nacos、Consul、 Eureka、ETCD) 2.為什么ZK不適合作為服務(wù)發(fā)現(xiàn)/注冊中心? 3.使用Redis作為服務(wù)發(fā)現(xiàn)/注冊中心是否可行? 4.服務(wù)熔斷與摘除機(jī)制:服務(wù)器摘除與客戶端摘除 5. 注冊中心與服務(wù)發(fā)現(xiàn) - Nacos 6. 負(fù)載均衡 – Spring Cloud Ribbon 7. 遠(yuǎn)程調(diào)用- Spring Cloud Feign |
第4單元 微服務(wù)可觀測性 - Logs 1.云原生 – 什么叫“可觀測性”? 可觀測性的背景、思維理念 2.Logs:分布式日志采集與檢索 (1)OpenTelemetry-Logs規(guī)范與協(xié)議 (2)服務(wù)端日志檢索方案1:ELK (3)服務(wù)端日志檢索方案2: Loki |
第5單元 微服務(wù)可觀測性 - Trace Trace(分布式鏈路追蹤) 1.OpenTelemetry-Trace規(guī)范與標(biāo)準(zhǔn) 2.服務(wù)端框架選項(xiàng):Jaeger、ZipKin、SkyWalking 3.OpenTelemetry協(xié)議到Jaeger/Zipkin/Skywalking協(xié)議的轉(zhuǎn)換 4.非侵入式上報(bào): Java Instrumentation與字節(jié)碼增強(qiáng)技術(shù) 5.侵入式上報(bào) Spring Cloud Sleuth + OpenTelemery SDK |
第6單元 微服務(wù)可觀測性 - Metrics 1.Metrics:自動化指標(biāo)采集與監(jiān)控 (1)OpenTelemetry-Metrcis規(guī)范 (2)如何自動化埋點(diǎn)上報(bào) 2.Promethus (1)Promethus出現(xiàn)的背景 (2)Promethus的架構(gòu) (3)OpenTelemetry與Promethus的整合 3.進(jìn)階 – 從DevOps到AIOps |
第2天 - 微服務(wù)架構(gòu)下的幾大核心問題 第1單元 微服務(wù)拆分與 DDD領(lǐng)域劃分 1.微服務(wù)拆分的N種拆法:微服務(wù)與宏服務(wù) 2.微服務(wù)拆分 與 領(lǐng)域劃分是個什么關(guān)系? 3.如何用DDD指導(dǎo)微服務(wù)拆分? |
第2單元 微服務(wù)的容量規(guī)劃、限流、熔斷、降級 1.微服務(wù)的容量規(guī)劃:預(yù)估方法與壓測方法 2.微服務(wù)限流 3.微服務(wù)熔斷、超時(shí)與重試 4.微服務(wù)降級 |
第3單元 服務(wù)間的分布式事務(wù) 0. 不會分布式事務(wù),等于不會微服務(wù) 1. 日常工作中所有分布式事務(wù)場景: (1)DB與DB的分布式事務(wù), (2)DB與MQ的分布式事務(wù), (3)DB與服務(wù)的分布式事務(wù), (4)服務(wù)與服務(wù)的分布式事務(wù) 2. 分布式事務(wù)解決方案對比與分析: 2PC, TCC, 最終一致性,1PC,對賬 3. 分布式事務(wù)典型案例剖析:電商平臺庫存系統(tǒng) 4. Seata分布式事務(wù)框架與分布式數(shù)據(jù)庫 |
第3天 – 云原生基礎(chǔ) – 從Docker到K8S 第1單元 Docker到底是個啥 1. 容器的本質(zhì) 2. Docker - 容器和鏡像是個什么關(guān)系 3. Docker技術(shù)對開發(fā)、測試、運(yùn)維帶來的變更 |
第2單元 Docker實(shí)戰(zhàn) 1.Docker安裝 2.案例1: 下載、運(yùn)行tomcat鏡像 3.案例2: 進(jìn)入容器內(nèi)部一探究竟 4.案例3: 制作war包鏡像并運(yùn)行 5. Docker命令總結(jié) |
第3單元 Docker鏡像的基本原理 - 鏡像分層 1. 為什么會有鏡像分層? 2. Linux堆疊文件系統(tǒng)原理:AuFS/OverlayFS 3. 鏡像的分層結(jié)構(gòu) 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. 創(chuàng)建Volume并掛載 3. 匿名Volume 4. Dockfile中掛載Volume |
第6單元 Docker背后的Linux原理 1. cggroups 2. namespace 3. 綁定掛載機(jī)制 4. 聯(lián)合文件系統(tǒng) |
第7單元 從Docker到K8S 1. PaaS之戰(zhàn):從Docker到K8S 2. CNCF基金會 3. K8S架構(gòu)介紹 4.K8S架構(gòu)缺陷 – 各個大廠做的性能與高可用優(yōu)化 5.什么叫容器編排? - K8S和Hadoop Yarn的類比 6. 虛擬機(jī)上云和容器上云的關(guān)鍵差別 |
第8單元 K8S編排的基本單位-Pod 1.為什么引入Pod這個概念? Pod和容器的區(qū)別? 2. 3個實(shí)際案例闡釋Pod的作用 案例1: c++共享內(nèi)存 - 多進(jìn)程通信 案例2:Java war包與Tomcat容器 案例3:微服務(wù)與日志收集Agent |
第9單元 K8S API入門 1.K8S Restful API 2.GVK 3.究竟什么叫Workload? 4.Workload的5種類型:Deployment/StatefulSet/DaemonSet/Job/CronJob 5.Workload和 Pod什么關(guān)系? |
第4天 云原生進(jìn)階 - 微服務(wù)與云原生融合 第1單元 微服務(wù)部署- K8S Deployment詳解 1.Deployment yaml詳解:Metadata與PodSpec/PodTemplate 2. Deployment發(fā)布策略:滾動發(fā)布和Recreate 3. 調(diào)度的親和性與反親和性: (1)node親和性 (2)pod親和性 (3)軟/硬親和性、反親和性 |
第2單元 Pod進(jìn)階: 生命周期與狀態(tài) 1. init Container 2. postStart Hook 3. 存活探針 4. 就緒探針 5. 啟動探針 6. preStop Hook 7. Pod狀態(tài)與Container狀態(tài) |
第3單元 Service: 微服務(wù)框架與K8S如何整合 1.K8S Service使用與原理: ClusterIP / NodePort / LoadBalancer /ExternelName 2. K8S Service與 微服務(wù)的service的關(guān)系 3. 如何把SpringCloud框架和K8S整合? |
第4單元 有狀態(tài)應(yīng)用:卷與存儲、StatefulSet 1. Volume 2. PV / PVC 3. Storage Class 4. Local PV 5. Projected PV(ConfigMap/Secret/Downward API) 6. StatefulSet與Deployment關(guān)鍵差異 |
第5單元 擴(kuò)展K8S API與Operator 1.CRD 與 CR 2.Controller與Operator 3.自定義API腳手架:KubeBuilder 4.自定義workload 典型案例: (1)原地升級(2)如何支持灰度發(fā)布? |
第6單元 富容器 – 遺留老系統(tǒng)上云 1.遺留老系統(tǒng)如何上云問題? 2.上云的2個模式:微服務(wù)上云、富容器上云 3.富容器的優(yōu)缺點(diǎn) 4.富容器的實(shí)現(xiàn)原理 – 如何把容器當(dāng)物理機(jī)用 (1)容器與1號進(jìn)程 (2)自定義富容器Operator (3)原地升級發(fā)布 |
第7單元 運(yùn)維標(biāo)準(zhǔn)化與PaaS平臺 1.云的合規(guī)性問題:公有云/私有云 2.虛擬機(jī)跑容器 vs. 物理機(jī)跑容器 3.K8S集群的幾種隔離模式 4.運(yùn)維的挑戰(zhàn):多租戶/多機(jī)房/多集群的管理問題 5. CI/CD工具與云平臺的結(jié)合 6. 基于云的同機(jī)房/跨機(jī)房服務(wù)路由 7. 高階:當(dāng)云原生遇上異地多活/單元化 |
第8單元 容器網(wǎng)絡(luò) 1.網(wǎng)絡(luò)基本原理 – 交換機(jī)(2層網(wǎng)絡(luò)) 與 路由器(3層網(wǎng)絡(luò)) 2.Host網(wǎng)絡(luò)模式 (1)Host網(wǎng)絡(luò)模式原理 (2)Host網(wǎng)絡(luò)模式局限性與解決辦法 3.容器網(wǎng)絡(luò)的引入 4.公有云:VPC與CIDR 5.隧道技術(shù)的基本原理 6.OverLay網(wǎng)絡(luò): 網(wǎng)絡(luò)虛擬化 與 Vxlan 7.路由網(wǎng)絡(luò): flannel host-gw 8.UnderLay網(wǎng)絡(luò): VPC 9.容器網(wǎng)絡(luò)的規(guī)劃與技術(shù)選型 |