第一部分 基礎知識 |
第一單元 微服務架構概述 |
什么是微服務架構
微服務架構是敏捷開發的必然結果
1. 單體應用的優勢與面臨的挑戰
案例:演示淘寶在系統不斷發展的過程中面臨的難題
許多系統在不斷發展過程中越來越龐大帶來的問題
2. 康威定律與人月神話
煙囪式的功能團隊導致煙囪式的應用
人員越來越多、溝通越來越困難、工作效率越來越低
3. 未來快速變化的市場需要敏捷團隊
更快地交付、更快地反饋、更快地產生價值
敏捷化的開發團隊呼喚微服務架構
微服務是未來互聯網發展的必然結果
1. 互聯網的發展及其面臨的挑戰
案例:分析淘寶近十年的發展及其面臨的挑戰
互聯網在面臨橫向擴展、服務隔離等問題的局限
2. 微服務能夠更好地解決互聯網問題
分析傳統架構在解決互聯網問題時采用的辦法
講解微服務架構應當是什么樣子
剖析微服務架構在解決諸多互聯網問題時的思路
微服務架構給測試與運維帶來的挑戰
1. 微服務架構給測試帶來的挑戰
微服務架構與持續集成
微服務架構采用的測試工具
2. 微服務架構給運維帶來的調整
微服務架構與DevOps
微服務架構的管理與發布過程 |
第二單元 準確認識微服務 |
關于微服務的誤解
1. 微服務 vs. SOA
案例:SOA在項目中的應用
案例:微服務在項目中的應用
微服務與SOA的聯系與差異
2. 微服務架構的本質
- 由服務組件組成的系統
- 按照業務而不是技術來組織服務
- 做全生命周期的產品而不是項目
- 智能端點與通道扁平化
- 去中心化治理
- 去中心化數據管理
- 自動化運維(DevOps)
- 故障恢復與容錯
- 演化式設計 案例:演示出租車調度系統的微服務設計過程
|
第二部分 微服務架構設計 |
第三單元 微服務常用架構 |
最簡版的微服務架構
1. 服務注冊與發現
2. 服務網關
3. 微服務
4. 配置管理
微服務常用的技術框架
1. Spring Cloud簡介
2. Spring Boot簡介
?
|
第四單元 服務注冊與發現 |
服務注冊與發現的概念與作用
實現服務注冊與發現的方案
1. Dubbo的簡介
2. Zookeeper的簡介
3. Netflix Eureka的簡介
Spring Cloud Eureka方案
1. Spring Cloud Eureka的系統架構
2. Eureka Server的設計
3. Eureka Client的設計
4. 服務發現的設計
- 使用ribbon的設計
- 使用feign的設計 5. 熔斷機制
- 斷路器設計模式
- 線程池隔離、優雅降級與熔斷
- Hystrix的斷路器設計 6. 高可靠設計與Eureka集群
練習:使用Eureka構建微服務系統
1. Eureka Server
2. Eureka Client
3. 使用ribbon/feign進行微服務間調用
4. 設計熔斷器
|
第五單元 微服務層的設計 |
微服務架構的6種設計模式
1. 聚合模式
互聯網縱向切分在微服務的實現
縱向切分應當注意的設計問題
避免跨庫關聯查詢的設計
采用分布式事務解決跨庫的事務操作
2. 代理模式
互聯網橫向切分與讀寫分離在微服務的實現
3. 鏈式模式
復雜應用場景與生產流水線的設計思路
4. 分支模式
5. 數據共享模式
6. 異步消息模式
案例:微服務實現異步化操作
微服務的粒度
1. 微服務的拆分原則
2. 微服務的拆分方式
?
微服務設計的反模式
1. 太多數據遷移
2. 數據共享反模式
3. 頻繁交互反模式
探討:如何解決微服務接口太多的問題 |
第六單元 服務網關 |
服務網關在微服務架構中的作用
1. 多渠道用戶接入
微服務前后端分離的架構設計
2. 微服務的負載均衡
負載均衡的難題:Session管理
3. 路由網關(zuul)
藍綠發布、滾動發布、灰度發布與金絲雀發布
權限驗證與安全保障
路由網關的設計實現
4. 流量控制與節流
練習:設計服務網關、路由網關與斷路器
|
第七單元 Docker與容器技術 |
Docker簡介
1. Docker vs. 虛擬化
2. Docker的運行方式
3. Docker的基本操作
將微服務部署到Docker中
演練:微服務在Docker中的部署過程
練習:模擬構建一個微服務系統
?
|
第八單元 配置管理與DevOps |
DevOps簡介
1. 微服務為什么需要DevOps
2. 微服務的測試過程
3. 微服務的發布過程
微服務配置中心
1. Spring Cloud Config的配置過程
2. Spring Cloud Config的發布過程
微服務的分布式運維
1. Kubernetes簡介
2. 用Kubernetes進行分布式運維
探討:如何構建一個微服務運營平臺 |
第三部分 微服務的系統設計 |
第九單元 領域驅動設計 |
所有軟件企業不得不面對的問題
1. 我們現在面對的是快速變化的時代
2. 軟件研發卻出現了問題:
變更越頻繁,代碼質量下降越快
案例:演示電商網站付款功能代碼質量下降的過程
3. 揭示軟件退化的根源
案例:演示軟件退化的過程與高質量設計的過程
深度解讀高內聚與單一職責原則
領域驅動設計
1. 軟件變更過程中的設計難題
2. 領域驅動的設計思想
案例:重新演練電商網站付款功能的變更過程
第一個版本的領域模型與設計
- 構建用例模型
- 構建領域模型
- 構建領域事件 第一次變更的分析設計過程
- 演示領域分析不斷深入的過程
- 演示領域驅動指導軟件變更的過程 第二次變更與兩頂帽子的設計方式
第三次變更與限界上下文
- 聚合、工廠、倉庫的設計
- 限界上下文與微服務 3. 領域驅動的設計實現
貧血模型 vs. 充血模型
領域驅動在傳統架構中的實現
領域驅動在微服務架構中的實現
在微服務中使用領域事件
1. 認識領域事件
2. 事件風暴(Event Storming)
3. 聚合、聚合根及其應用
4. 工廠、倉庫及其設計實現
5. 限界上下文與微服務
案例:智慧診療系統的領域驅動過程
軟件架構如何支持領域驅動
1. 架構調整不是件簡單的事兒
如何實現業務領域層與技術框架的解耦
如何簡化業務實現的過程
2. 架構設計如何支持領域驅動
增刪改如何支持領域驅動
查詢如何支持領域驅動
3. 微服務架構如何支持領域驅動
案例:一個簡單、易于開發的微服務架構
如何實現前端微服務化的設計
|
第十單元 傳統架構的微服務轉型 |
傳統架構微服務轉型的過程
1. 技術轉型
準備工作:Maven→Spring boot
整理分層:MVC層與BUS層的分離
建立微服務:注冊中心、服務網關與微服務
2. 業務拆分
構建領域模型與限界上下文
業務與數據庫的縱向切分
練習:將一個傳統架構的軟件改造成微服務
初創型企業的微服務建設過程
案例:某智慧醫療系統的建設過程
1. 系統的建設規劃
2. 系統的分析設計過程
3. 微服務架構設計與對外接口
4. 微服務運營平臺的建設
成熟型企業開展微服務的思路
1. 成熟企業開展微服務的難題
2. 記錄型系統 vs. 交互型系統
3. 在混合云中構建交互型系統
案例:某金融企業向微服務轉型的過程
?
大數據+微服務的轉型過程
案例:某風控系統的大數據+微服務的轉型過程
1. 該風控系統的背景介紹
2. 互聯網轉型帶來的機遇與挑戰
3. 后端大數據的轉型過程
4. 前端微服務的轉型過程
5. 構建風險分析模型的AppStore平臺
探討:大數據如何與微服務相結合 |