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