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