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