【課程背景】
隨著互聯網時代的到來,數據量急劇增加,并發量也越來越大,傳統的單體應用訪問起來變得越來越緩慢?企業如何快速的找到應用緩慢的根源并進行快速的優化?企業如何重新規劃和設計高可用高并發的分布式系統的架構,而微服務架構已然成為分布式系統架構最主流的實現方案。
本課程首先從軟件架構的演變歷程開始分析,分析傳統的單體架構是如何演變為微服務架構的?探討了基于微服務架構對團隊技能以及團隊組織架構的要求,深入剖析了什么類型的項目適合采用微服務架構?微服務架構的技術選型以及如何選擇?
接著從微服務架構所涉及到的各種組件,基于原理+實戰的模式。讓學員對其有全盤和深入的理解和應用,并掌握在日常工作中的最佳實踐。
課程將通過實例演示和動手實踐相結合的方式來強化學員對課程知識的掌握,并快速的轉化為實戰技能應用到企業的日常工作當中。
【課程收益】
? 了解企業微服務架構落地的全流程
? 掌握微服務架構對團隊和人才的要求
? 掌握微服務架構的基礎設施和實現方案
? 掌握微服務架構的最佳實踐
【課程對象】CTO、技術總監、研發負責人、架構師、研發工程師、售前技術工程師
【課程時間】2天
【課程大綱】
一、微服務架構背景
1、從傳統單體架構到分布式微服務架構演變歷程
案例:淘寶
2、微服務架構相關概念
? 微服務架構定義
? 微服務架構面臨哪些挑戰?
? 微服務生命周期與交付流程
? 微服務技術選型
? 微服務架構常用組件
? 微服務對于團隊要求
二、如何進行微服務設計與拆分?
1、微服務設計和拆分原則
? 微服務設計、開發和運維流程剖析
? 微服務拆分維度有哪些?
? 微服務拆分原則有哪些?
2、微服務拆分后面臨問題?如何解決?
? 如何快速定位故障?
? 如何進行系統間調用鏈路分析?
? 如何高效的實現服務治理?
? 如何確保服務上下游調用的穩定性?
三、微服務開發框架利器之SpringBoot?
1、SpringBoot前世今生
? SpringBoot誕生背景
? SpringBoot優勢
2、SpringBoot開發特性
? SpringBoot包版本管理
? SpringBoot自動配置
? SpringBoot常用注解
? SpringBoot自定義配置參數
? SpringBoot外部化配置
3、SpringBoot生產級特性
? SpringBoot多環境配置
? SpringBoot部署與運維
四、微服務案例分析
1、微服務按業務拆分
2、框架搭建
? 微服務整體工程架構搭建
? 各微服務模塊開發
五、微服務之遠程調用
1、遠程調用
? 如何實現跨服務間的遠程調用?
? 跨服務間遠程調用的幾種方式對比
? 跨服務間遠程調用需要考慮的因素有哪些?
2、負載均衡
? 如何實現跨服務間調用的負載均衡?
? 服務端負載均衡方案
? 客戶端負載均衡方案
六、微服務之注冊中心
1、服務治理
? 服務治理的定義與作用
? 微服務調用端和微服務提供端之間透明通信
? 微服務動態注冊與發現
2、注冊中心實現方案
? Zookeeper底層原理剖析
? Eureka底層原理剖析
? Nacos底層原理剖析
? Nacos服務分級存儲模型
? 如何基于Nacos實現跨區域集群的調用
? 如何基于namespace實現環境隔離
3、注冊中心應用實戰
? 基于Eureka實現服務注冊與發現,上下游調用
? 基于Nacos實現服務注冊與發現,上下游調用
七、微服務之遠程同步調用?
1、RestTemplate實現遠程調用
? 負載均衡原理
? 基于RestTemplate的直連遠程同步調用
? 使用RestTemplate如何與Eureka、Nacos實現服務發現及負載均衡
2、Feign實現遠程調用
? 基于Feign實現的遠程負載均衡調用
? Feign客戶端工程結構最佳實踐
3、自定義負載均衡
? 負載均衡策略IRule
? 如何指定負載均衡策略、自定義負載均衡策略?
八、微服務之遠程異步調用?
1、異步調用
? 微服務間異步調用的實現方式
? 微服務間異步調用如何確保異步成功執行?
? 基于MQ實現微服務異步調用
? MQ的異步通知模型
? MQ的異步通知模型下服務的冪等性要求
2、異步調用實現
? 消息中間件選型與對比
? 消息隊列編程模型之點對點
? 消息隊列編程模型之發布/訂閱
? 基于RabbitMQ實現的遠程異步調用
? 基于Kafka實現的遠程異步調用
3、總結:基于MQ實現異步調用注意事項
九、微服務之容錯處理
1、微服務容錯處理
? 雪崩效應場景分析
? 如何應對雪崩效應下的容錯處理
? 微服務的5種容錯方案:超時處理、艙壁模式、斷路器、限流、降級
? 微服務間調用超時如何處理?
? 如何實現微服務的服務降級與熔斷
? 如何對服務提供者實現限流?
2、微服務容錯處理方案之Hystrix
? Spring Cloud體系下之容錯處理解決方案斷路器Hystrix
? 基于Hystrix實現方法級的服務降級與熔斷
? 基于Hystrix服務降級與熔斷策略的配置
? 如何正確設置服務的超時時間?應遵循什么原則?
? 基于Hystrix Dashboard實現服務的流量與熔斷監控
3、微服務容錯處理方案之Sentinel
? SCA服務限流降級之Sentinel
? Sentinel的基本概念:資源、規則
? Sentinel的工作流程與原理剖析
? Sentinel對流量控制、熔斷降級的實現機制
? Sentinel實時監控和規則管理的控制臺
? Sentinel流控模式:關聯模式、鏈路模式
? Sentinel留空效果:warm up、排隊等待
? Sentinel熱點參數限流:全局參數限流、熱點參數限流
? Sentinel隔離:線程隔離與信號量隔離模式
? 基于FeignClient整合Sentinel實現隔離和降級邏輯
? Sentinel熔斷降級:慢調用、異常比例
? Sentinel與開源框架的快速適配
? Spring Cloud體系下之容錯處理解決方案斷路器Hystrix
? Sentinel與Spring Cloud Hystrix對比
十、微服務之網關
1、微服務網關
? 微服務網關定義
? 服務網關的應用場景有哪些?
? 網關的實現原理
2、微服務網關實現之zuul
? SpringCloud之微服務網關zuul
? 編寫zuul微服務網關的流程
? zuul過濾器的應用
? zuul的容錯與回退處理
? zuul如何自定義服務的中轉策略
3、微服務網關實現之gateway
? spring cloud gateway網關
? spring cloud gateway之斷言工廠
? spring cloud gateway之過濾器工廠
? spring cloud gateway之全局過濾器
? 如何解決網關跨域的問題
十一、微服務之配置中心
1、微服務配置中心
? 服務配置中心介紹與應用場景分析
? 如何管理微服務中的配置
? 如何實現配置端點的刷新
? 如何確保配置中心內容的安全性?
? 如何實現配置刷新后自動下發?
2、微服務配置中心實現之Nacos
? Nacos下配置的多項目分組管理
? SCA下Nacos實現的配置管理與動態刷新
十二、微服務監控
1、微服務監控
? Spring Boot自帶的開源監控系統Spring Boot Admin
? 自主搭建系統監控中心
2、微服務調用鏈跟蹤
? 分布式調用鏈中心
? 開源調用鏈中心Zipkin
? 微服務調用鏈追蹤
? Spring Cloud Sleuth簡介
? Spring Cloud Sleuth與Zipkin結合應用
十三、微服務之分布式事務
1、分布式事務原理
? CAP定理:一致性、可用性、分區容忍性
? BASE理論
? 數據庫事務的ACID特性分析
? 本地事務 VS 分布式事務
? 如何解決跨服務間同步調用的數據一致性?
? 本地事務定義以及事務的ACID特性分析
? 什么是分布式事務?
? 分布式事務的應用場景有哪些?
? 分布式事務的原理
? 分布式事務XA協議、兩階段提交與三階段提交的流程與原理剖析
2、分布式事務實現之Seata?
? SCA下Seata對事務模式的支持
? Seata AT模式下的應用實戰
十四、微服務日志
1、微服務日志
? 傳統日志管理方式痛點分析
? 為什么需要搭建應用日志中心
2、微服務日志實現之ELK?
? 開源日志中心ELK介紹
? 日志存儲系統之Elasticsearch
? 日志收集系統之Logstash
? 日志查詢系統之Kibana
? ELK日志中心搭建訪問日志的分析