課程介紹
近些年,隨著互聯(lián)網的不斷發(fā)展,越來越多的系統(tǒng)需要建設在互聯(lián)網上,應對高并發(fā)、大數據的嚴苛運營環(huán)境。在這種運營環(huán)境中,采用傳統(tǒng)的集中式系統(tǒng)架構越來越不能使用未來的發(fā)展,整個產業(yè)開始向分布式系統(tǒng)轉型。然而,在分布式系統(tǒng)轉型過程中,有許許多多的分布式技術千差萬別,并且要按不同場景去運用不同的分布式技術。本課程通過梳理,幫助學員理清,在大型分布式系統(tǒng)中如何運用各種分布式技術,解決什么問題。
首先,分布式系統(tǒng)按照功能分為生產型與分析型兩類系統(tǒng),它們通過讀寫分離的技術整合在一起。生產型分布式系統(tǒng)未來的發(fā)展趨勢就是基于云端的微服務架構。微服務架構將復雜系統(tǒng)化整為零,拆分成一個一個的微服務,部署在云端進行快速地橫向擴展與收縮。然后,將龐大的開發(fā)團隊拆分成一個一個的獨立功能分布式團隊,去維護各自的微服務。采用微服務架構降低了團隊溝通的成本,降低了系統(tǒng)維護的復雜度,更降低了系統(tǒng)發(fā)布的周期,使得我們可以快速交付、快速應對市場需求。
但是,微服務應當如何架構?它有哪些技術特點與技術難點?由火龍果軟件舉辦的本課程將會用許多的真實案例講解,什么是微服務,如何用微服務架構我們的系統(tǒng),并用工作坊的形式,實際帶領學員去架構微服務,在動手中獲得知識。
此外,對于分析型分布式系統(tǒng),在面對海量數據方面,本課程還介紹了NoSQL數據庫、Hadoop大數據處理技術,以及它們在應對海量數據存儲、深度數據挖掘與高效數據查詢方面,所做的設計。通過案例講解,可以讓學員理解如何運用NoSQL數據庫與Hadoop大數據處理技術解決相關問題、設計真實的系統(tǒng)。
培訓特色
本課程注重實戰(zhàn),并以工作坊的形式提供很多案例,讓學員通過練習掌握分布式架構設計的過程,以及從傳統(tǒng)架構向微服務改造的過程。同時,通過大量真實的案例,講解許多公司在開展分布式系統(tǒng)轉型過程中面臨的難題、解決的思路,以及最終的設計。
什么是分布式系統(tǒng)
集中式系統(tǒng)及其弊病
分布式系統(tǒng)的概念及其優(yōu)勢
大型業(yè)務系統(tǒng)架構的發(fā)展歷程
集中式系統(tǒng)架構的設計
多級集中式架構及其弊病
動靜分離與讀寫分離的設計
生產型業(yè)務系統(tǒng)的分布式設計
數據庫的橫向縱向切分
分布式緩存的設計
異步化操作與分布式隊列
生產型業(yè)務系統(tǒng)未來的發(fā)展趨勢
微服務的架構設計
服務網格ServiceMesh
NewSQL數據庫
分析型業(yè)務系統(tǒng)的分布式設計
NoSQL數據庫
基于Hadoop的大數據平臺
基于Kylin的多維數據建模
運用ElasticSearch解決海量明細查詢。
課程模塊
知識模塊
授課綱要
模塊一
分布式系統(tǒng)概述
什么是分布式系統(tǒng)
1.集中式系統(tǒng)及其弊病
2.分布式系統(tǒng)的概念及其優(yōu)勢
大型業(yè)務系統(tǒng)架構的發(fā)展歷程
1.集中式系統(tǒng)架構的設計
2.多級集中式架構及其弊病
3.動靜分離與讀寫分離的設計
生產型業(yè)務系統(tǒng)的分布式設計
1.數據庫的橫向縱向切分
2.分布式緩存的設計
3.異步化操作與分布式隊列
生產型業(yè)務系統(tǒng)未來的發(fā)展趨勢
1.微服務的架構設計
2.服務網格ServiceMesh
3.NewSQL數據庫
分析型業(yè)務系統(tǒng)的分布式設計
1.NoSQL數據庫
2.基于Hadoop的大數據平臺
3.基于Kylin的多維數據建模
4.運用ElasticSearch解決海量明細查詢
模塊二
分布式系統(tǒng)技術專題
分布式緩存
1.本地緩存vs.分布式緩存
2.分布式緩存設計原理與高可用設計
3.Redis分布式緩存部署
4.Redis分布式緩存設計實踐
5.Redis分布式緩存設計應注意的問題
內存數據庫
1.內存數據庫運行原理
2.內存數據庫設計選型
3.Redis內存數據庫設計實踐
1)內存數據庫+異步化技術方案
2)京東訂單系統(tǒng)的優(yōu)化過程
分布式事務
1.分布式事務的兩階段提交
2.TCC方案
1)TCC方案設計原理
2)阿里的Seata與GTS
3)TCC方案的設計實現
3.基于消息的分布式事務
1)基于消息的最終一致性
2)設計實踐及其存在的問題
3)基于半消息的設計實踐
4)基于消息表的設計方案
分布式鎖
1.分布式鎖的應用場景及其原理
2.基于數據庫的設計方案
3.基于Redis的設計方案
1)基于Redis的設計實踐
2)方案存在的問題
4.基于Zookeeper的設計方案
1)Zookeeper的設計原理
2)Zookeeper在服務治理中的應用
3)Zookeeper在大數據中的應用
4)Zookeeper在分布式鎖中的設計實現
5.基于etcd的設計方案
1)etcd的特點介紹
2)etcd在分布式鎖中的設計實現
分布式消息隊列
1.異步化操作與分布式消息隊列
2.RabbitMQ,RocketMQ,ActiveMQ與kafka的比較
3.RabbitMQ的設計實踐
4.Kafka的設計實踐
分布式數據庫
1.RMSDB→NewSQL→NoSQL
2.分布式存儲CAP理論
3.NoSQL數據庫及其原理
4.如何實現高并發(fā)大數據查詢場景
案例:MongoDB實現大數據秒級查詢
5.NewSQL數據庫及其原理
6.高并發(fā)寫入的分布式設計方案
案例:TiDB數據庫的分布式方案
模塊三
服務注冊與發(fā)現
服務注冊與發(fā)現的概念與作用
SpringCloudEureka方案
1.SpringCloudEureka的系統(tǒng)架構
2.EurekaServer的設計
3.EurekaClient的設計
4.服務發(fā)現的設計
?使用ribbon的設計
?使用feign的設計
5.熔斷機制在微服務的設計實現
?斷路器設計模式
?線程池隔離、優(yōu)雅降級與熔斷
?Hystrix的斷路器設計
?服務降級的設計實踐
6.高可靠設計與Eureka集群
模塊四
跨語言訪問與服務網格
微服務跨語言訪問的意義
1.Eureka跨語言訪問設計實踐
2.微服務跨語言訪問的設計局限
服務網格(ServiceMesh)
1.服務網格的概念及其發(fā)展歷程
2.Linkerd服務網格的設計原理
3.Istio服務網格的設計原理
4.螞蟻金服SofaMosn的設計實踐
5.微博服務網格的設計實踐
模塊五
微服務網關
微服務的安全措施與服務網關設計
1.多渠道用戶接入
2.請求合法性與用戶鑒權
3.灰度發(fā)布與金絲雀測試
4.全鏈路壓測
5.流量控制與節(jié)流
1)令牌桶算法、漏桶算法
2)Nginx在接入層的流量控制
3)服務層的流量控制設計思路
4)節(jié)流的設計實現
路由網關(zuul)的設計
1.智能路由與服務遷移
2.過濾器的設計與配置
3.Zuul的高可靠設計
模塊六
微服務層的設計
微服務架構的6種設計模式
1.聚合模式
案例:電商網站購物功能的設計
案例:電商網站下單服務的設計
單一職責原則與領域驅動設計
?互聯(lián)網縱向切分在微服務的實現
?縱向切分應當注意的設計問題
?避免跨庫關聯(lián)查詢的方案設計
2.代理模式
案例:電商網站支付功能的設計思路
3.鏈式模式
4.分支模式
5.異步消息模式
案例:12306的異步化操作
案例:電商網站異步化操作的微服務實現
6.數據共享模式
微服務的無狀態(tài)設計
?Session管理的設計難題
?微服務的無狀態(tài)設計
?基于http/rest的無狀態(tài)低耦合通訊
微服務設計的反模式
1.太多數據遷移
2.數據共享反模式
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.異步化的微服務調用
7.服務網關的設計與智能路由
微服務架構的管理與監(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層的分離
建立微服務:注冊中心、服務網關與微服務
2.業(yè)務拆分
構建領域模型與限界上下文
業(yè)務與數據庫的縱向切分
練習:將一個傳統(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è)向微服務轉型的過程
大數據+微服務的轉型過程
案例:某風控系統(tǒng)的大數據+微服務的轉型過程
1.該風控系統(tǒng)的背景介紹
2.互聯(lián)網轉型帶來的機遇與挑戰(zhàn)
3.后端大數據的轉型過程
4.前端微服務的轉型過程
5.構建風險分析模型的AppStore平臺
探討:大數據如何與微服務相結合
需要深入了解企業(yè)架構的技術人員。