課程模塊
知識模塊
授課綱要
模塊一
分布式系統(tǒng)概述
什么是分布式系統(tǒng)
1.集中式系統(tǒng)及其弊病
2.分布式系統(tǒng)的概念及其優(yōu)勢
大型業(yè)務(wù)系統(tǒng)架構(gòu)的發(fā)展歷程
1.集中式系統(tǒng)架構(gòu)的設(shè)計
2.多級集中式架構(gòu)及其弊病
3.動靜分離與讀寫分離的設(shè)計
生產(chǎn)型業(yè)務(wù)系統(tǒng)的分布式設(shè)計
1.數(shù)據(jù)庫的橫向縱向切分
2.分布式緩存的設(shè)計
3.異步化操作與分布式隊列
生產(chǎn)型業(yè)務(wù)系統(tǒng)未來的發(fā)展趨勢
1.微服務(wù)的架構(gòu)設(shè)計
2.服務(wù)網(wǎng)格ServiceMesh
3.NewSQL數(shù)據(jù)庫
分析型業(yè)務(wù)系統(tǒng)的分布式設(shè)計
1.NoSQL數(shù)據(jù)庫
2.基于Hadoop的大數(shù)據(jù)平臺
3.基于Kylin的多維數(shù)據(jù)建模
4.運用ElasticSearch解決海量明細查詢
模塊二
分布式系統(tǒng)技術(shù)專題
分布式緩存
1.本地緩存vs.分布式緩存
2.分布式緩存設(shè)計原理與高可用設(shè)計
3.Redis分布式緩存部署
4.Redis分布式緩存設(shè)計實踐
5.Redis分布式緩存設(shè)計應(yīng)注意的問題
內(nèi)存數(shù)據(jù)庫
1.內(nèi)存數(shù)據(jù)庫運行原理
2.內(nèi)存數(shù)據(jù)庫設(shè)計選型
3.Redis內(nèi)存數(shù)據(jù)庫設(shè)計實踐
1)內(nèi)存數(shù)據(jù)庫+異步化技術(shù)方案
2)京東訂單系統(tǒng)的優(yōu)化過程
分布式事務(wù)
1.分布式事務(wù)的兩階段提交
2.TCC方案
1)TCC方案設(shè)計原理
2)阿里的Seata與GTS
3)TCC方案的設(shè)計實現(xiàn)
3.基于消息的分布式事務(wù)
1)基于消息的最終一致性
2)設(shè)計實踐及其存在的問題
3)基于半消息的設(shè)計實踐
4)基于消息表的設(shè)計方案
分布式鎖
1.分布式鎖的應(yīng)用場景及其原理
2.基于數(shù)據(jù)庫的設(shè)計方案
3.基于Redis的設(shè)計方案
1)基于Redis的設(shè)計實踐
2)方案存在的問題
4.基于Zookeeper的設(shè)計方案
1)Zookeeper的設(shè)計原理
2)Zookeeper在服務(wù)治理中的應(yīng)用
3)Zookeeper在大數(shù)據(jù)中的應(yīng)用
4)Zookeeper在分布式鎖中的設(shè)計實現(xiàn)
5.基于etcd的設(shè)計方案
1)etcd的特點介紹
2)etcd在分布式鎖中的設(shè)計實現(xiàn)
分布式消息隊列
1.異步化操作與分布式消息隊列
2.RabbitMQ,RocketMQ,ActiveMQ與kafka的比較
3.RabbitMQ的設(shè)計實踐
4.Kafka的設(shè)計實踐
分布式數(shù)據(jù)庫
1.RMSDB→NewSQL→NoSQL
2.分布式存儲CAP理論
3.NoSQL數(shù)據(jù)庫及其原理
4.如何實現(xiàn)高并發(fā)大數(shù)據(jù)查詢場景
案例:MongoDB實現(xiàn)大數(shù)據(jù)秒級查詢
5.NewSQL數(shù)據(jù)庫及其原理
6.高并發(fā)寫入的分布式設(shè)計方案
案例:TiDB數(shù)據(jù)庫的分布式方案
模塊三
服務(wù)注冊與發(fā)現(xiàn)
服務(wù)注冊與發(fā)現(xiàn)的概念與作用
SpringCloudEureka方案
1.SpringCloudEureka的系統(tǒng)架構(gòu)
2.EurekaServer的設(shè)計
3.EurekaClient的設(shè)計
4.服務(wù)發(fā)現(xiàn)的設(shè)計
?使用ribbon的設(shè)計
?使用feign的設(shè)計
5.熔斷機制在微服務(wù)的設(shè)計實現(xiàn)
?斷路器設(shè)計模式
?線程池隔離、優(yōu)雅降級與熔斷
?Hystrix的斷路器設(shè)計
?服務(wù)降級的設(shè)計實踐
6.高可靠設(shè)計與Eureka集群
模塊四
跨語言訪問與服務(wù)網(wǎng)格
微服務(wù)跨語言訪問的意義
1.Eureka跨語言訪問設(shè)計實踐
2.微服務(wù)跨語言訪問的設(shè)計局限
服務(wù)網(wǎng)格(ServiceMesh)
1.服務(wù)網(wǎng)格的概念及其發(fā)展歷程
2.Linkerd服務(wù)網(wǎng)格的設(shè)計原理
3.Istio服務(wù)網(wǎng)格的設(shè)計原理
4.螞蟻金服SofaMosn的設(shè)計實踐
5.微博服務(wù)網(wǎng)格的設(shè)計實踐
模塊五
微服務(wù)網(wǎng)關(guān)
微服務(wù)的安全措施與服務(wù)網(wǎng)關(guān)設(shè)計
1.多渠道用戶接入
2.請求合法性與用戶鑒權(quán)
3.灰度發(fā)布與金絲雀測試
4.全鏈路壓測
5.流量控制與節(jié)流
1)令牌桶算法、漏桶算法
2)Nginx在接入層的流量控制
3)服務(wù)層的流量控制設(shè)計思路
4)節(jié)流的設(shè)計實現(xiàn)
路由網(wǎng)關(guān)(zuul)的設(shè)計
1.智能路由與服務(wù)遷移
2.過濾器的設(shè)計與配置
3.Zuul的高可靠設(shè)計
模塊六
微服務(wù)層的設(shè)計
微服務(wù)架構(gòu)的6種設(shè)計模式
1.聚合模式
案例:電商網(wǎng)站購物功能的設(shè)計
案例:電商網(wǎng)站下單服務(wù)的設(shè)計
單一職責(zé)原則與領(lǐng)域驅(qū)動設(shè)計
?互聯(lián)網(wǎng)縱向切分在微服務(wù)的實現(xiàn)
?縱向切分應(yīng)當注意的設(shè)計問題
?避免跨庫關(guān)聯(lián)查詢的方案設(shè)計
2.代理模式
案例:電商網(wǎng)站支付功能的設(shè)計思路
3.鏈式模式
4.分支模式
5.異步消息模式
案例:12306的異步化操作
案例:電商網(wǎng)站異步化操作的微服務(wù)實現(xiàn)
6.數(shù)據(jù)共享模式
微服務(wù)的無狀態(tài)設(shè)計
?Session管理的設(shè)計難題
?微服務(wù)的無狀態(tài)設(shè)計
?基于http/rest的無狀態(tài)低耦合通訊
微服務(wù)設(shè)計的反模式
1.太多數(shù)據(jù)遷移
2.數(shù)據(jù)共享反模式
3.頻繁交互反模式
模塊七
Docker與容器技術(shù)
Docker簡介
1.Dockervs.虛擬化
2.Docker的運行方式
3.Docker的基本操作
將微服務(wù)部署到Docker中
演練:微服務(wù)在Docker中的部署過程
練習(xí):模擬構(gòu)建一個微服務(wù)系統(tǒng)
模塊八
基于云端的分布式部署與DevOps
DevOps簡介
1.為什么需要DevOps
2.微服務(wù)的測試過程
3.微服務(wù)的發(fā)布過程
分布式運維
1.Kubernetes的運行原理解析
2.Kubernetes命令與操作
3.Kubernetes的微服務(wù)發(fā)布與管理
4.用配置文件在Kubernetes中部署微服務(wù)
微服務(wù)平臺自動化運維設(shè)計實踐
演示:Git+Jenkins+docker+k8s的自動化分布式部署
模塊九
分布式微服務(wù)設(shè)計實踐
演練微服務(wù)開發(fā)的整個過程
1.演練單體應(yīng)用的微服務(wù)轉(zhuǎn)型過程
2.微服務(wù)開發(fā)的父項目與基礎(chǔ)平臺
3.微服務(wù)開發(fā)的多環(huán)境配置
4.高可靠的分布式服務(wù)治理
5.前端、聚合層、原子服務(wù)層的設(shè)計
6.異步化的微服務(wù)調(diào)用
7.服務(wù)網(wǎng)關(guān)的設(shè)計與智能路由
微服務(wù)架構(gòu)的管理與監(jiān)控
1.配置中心SpringCloudConfig
2.斷路監(jiān)控SpringCloudTurbine
3.鏈路監(jiān)控SpringCloudZipKin
分布式容器部署演練
1.制作Jenkins定時任務(wù)
2.上傳Docker私服
3.部署k8s集群
故障檢測與監(jiān)控
模塊十
傳統(tǒng)架構(gòu)的分布式技術(shù)轉(zhuǎn)型
傳統(tǒng)架構(gòu)微服務(wù)轉(zhuǎn)型的過程
1.技術(shù)轉(zhuǎn)型
準備工作:Maven→Springboot
整理分層: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ù)運營平臺的建設(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)型帶來的機遇與挑戰(zhàn)
3.后端大數(shù)據(jù)的轉(zhuǎn)型過程
4.前端微服務(wù)的轉(zhuǎn)型過程
5.構(gòu)建風(fēng)險分析模型的AppStore平臺
探討:大數(shù)據(jù)如何與微服務(wù)相結(jié)合