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