【課程背景】
隨著互聯(lián)網時代的到來,數(shù)據(jù)量急劇增加,并發(fā)量也越來越大,傳統(tǒng)的應用訪問起來變得越來越緩慢?企業(yè)如何快速的找到應用緩慢的根源并進行快速的優(yōu)化?企業(yè)如何重新規(guī)劃和設計高可用高并發(fā)的分布式系統(tǒng)的架構?
本課程圍繞實際的項目中遇到的各種瓶頸展開,一方面有針對性的分別從分布式系統(tǒng)中常用中間件、講解各類中間件的原理、應用場景以及如何構造高性能的大型的分布式的應用系統(tǒng);另一方面,從數(shù)據(jù)庫層面如何應對分布式系統(tǒng)下的擴容;分別結合實際的技術與案例進行講解,為技術團隊提供優(yōu)秀的系統(tǒng)架構設計思路和方案,有效提供學員在開發(fā)大型系統(tǒng)項目過程中應具備的相關技能。
【課程收益】
? 了解分布式系統(tǒng)架構演變過程
? 掌握分布式系統(tǒng)原理
? 掌握分布式系統(tǒng)技術實現(xiàn)
【課程對象】CTO、技術總監(jiān)、研發(fā)負責人、架構師、研發(fā)工程師、售前技術工程師、運維工程師
【課程時間】2天
【課程大綱】
一、分布式系統(tǒng)架構演變
1、分布式系統(tǒng)架構演變歷程
? Web動靜態(tài)資源分離
? 前端靜態(tài)資源緩存
? 本地數(shù)據(jù)緩存
? 應用負載均衡
? CDN
? 分布式緩存
? 數(shù)據(jù)庫讀寫分離
? 數(shù)據(jù)庫垂直分庫
? 數(shù)據(jù)庫水平分庫
? 分布式文件系統(tǒng)
案例:億級流量分布式架構設計思路
二、分布式系統(tǒng)理論
1、CAP定理
? 分布式系統(tǒng)CAP定理的三個指標
? CAP定理三個指標如何權衡和選擇
2、BASE理論
? BASE理論詳解
? BASE理論的定位
3、分布式系統(tǒng)面臨挑戰(zhàn)
? 分布式系統(tǒng)的目標
? 分布式系統(tǒng)的基礎
? 單體垂直架構如何改造為分布式架構
? 分布式架構會引入哪些難題?
? 分布式系統(tǒng)的挑戰(zhàn)
三、分布式系統(tǒng)之緩存
1、緩存
? 緩存的定義
? 緩存能解決什么問題?
? 緩存架構之分布式緩存與集中式緩存
? 緩存的基本原則
? 分布式緩存的持久化
? 分布式緩存的高可用
? 分布式緩存的橫向擴展
? 分布式緩存常見業(yè)務場景分析
? 多級緩存
2、分布式系統(tǒng)緩存之Redis
? 分布式緩存之Redis
? Redis常用數(shù)據(jù)結構及其應用場景
? Redis高級特性:發(fā)布/訂閱、過期設置、事務支持
? Redis持久化策略之rdb與aof
? Redis主從復制
? Redis集群
? Redis集群擴容
實戰(zhàn):基于redis實現(xiàn)的緩存會話共享案例分析
實戰(zhàn):redis集群搭建與部署
實戰(zhàn):基于redis實現(xiàn)的熱數(shù)據(jù)緩存
實戰(zhàn):基于redis實現(xiàn)的分布式鎖
四、分布式系統(tǒng)之消息隊列
1、消息隊列
? 分布式系統(tǒng)之同步調用案例分析
? 分布式系統(tǒng)同步調用存在問題與優(yōu)化方向
? 消息隊列之分布式系統(tǒng)異步調用案例分析
? 消息隊列之削峰填谷案例分析
? 消息中間件選型與對比
? 消息隊列編程模型之點對點
? 消息隊列編程模型之發(fā)布/訂閱
案例:基于分布式消息隊列設計的千萬級賬單推送系統(tǒng)
實戰(zhàn):微服務架構下基于消息隊列實現(xiàn)微服務間數(shù)據(jù)最終一致性
五、分布式系統(tǒng)之協(xié)調服務
1、分布式協(xié)調服務基礎
2、分布式協(xié)調中間件之ZooKeeper
? ZooKeeper誕生的背景和它的作用
? ZooKeeper單機版安裝、常用命令
? ZooKeeper集群版的安裝、節(jié)點角色
? ZooKeeper的接入和使用
? ZooKeeper運行機制剖析
? ZooKeeper的典型應用場景與實現(xiàn)思路
? ZooKeeperWatch機制的運行流程
案例:基于ZooKeeper實現(xiàn)的服務注冊與發(fā)現(xiàn)
七、分布式系統(tǒng)之日志中心系統(tǒng)
1、日志分析面臨問題
? 傳統(tǒng)日志系統(tǒng)存在問題分析
? 如何實現(xiàn)日志統(tǒng)一搜集、統(tǒng)一存儲、統(tǒng)一查詢?
2、日志中心解決方案ELK
? ELK應用案例分析
? ELK核心組成
? ELK之ElasticSearch
? ELK之logstash
? ELK之kibana
? ELK之工作流程剖析
? ELK常見應用架構
? ELK典型應用架構
? 海量日志的ELK集群架構
案例:基于ELK實現(xiàn)的訪問日志分析
八、分布式系統(tǒng)之分布式事務
1、分布式系統(tǒng)下數(shù)據(jù)庫面臨問題
? 本地事務VS分布式事務
? 二階段提交協(xié)議過程與原理分析
? 二階段提交協(xié)議的缺點
? 三階段提交
? 分布式事務的目標
? 分布式事務之強一致性應用場景
? 分布式事務之最終一致性應用場景
2、分布式事務框架之Seata
? 分布式事務框架之Seata
? Seata支持的4種模式
實戰(zhàn):微服務架構下基于Seata的4種模式實現(xiàn)微服務間數(shù)據(jù)強一致性
九、分布式系統(tǒng)之數(shù)據(jù)庫層架構設計
1、分布式系統(tǒng)下數(shù)據(jù)庫面臨問題
? 什么是分庫分表?
? 什么情況下需要分庫分表?
? 分庫分表之垂直分表
? 分庫分表之垂直分庫
? 分庫分表之水平分表
? 分庫分表之水平分庫分表
? 分庫分表帶來的問題-跨庫關聯(lián)查詢
? 分庫分表帶來的問題-分布式事務
? 分庫分表帶來的問題-排序翻頁函數(shù)計算
? 分庫分表帶來的問題-全局主鍵避重
? 如何選擇合適的數(shù)據(jù)分片鍵?分片鍵常用算法有哪些?
? 如何自定義分片鍵的算法?
2、分庫分表主流中間件之客戶端分庫分表ShardingJDBC
? 分庫分表主流中間件之客戶端分庫分表ShardingJDBC
? ShardingJDBC對于現(xiàn)有應用的SQL或ORM有什么要求或局限性?
? 分庫分表主流中間件之服務端分庫分表MyCat
? 分布式數(shù)據(jù)庫NoSQL
實戰(zhàn):基于ShardingJDBC實現(xiàn)的分庫分表之廣播表、綁定表方案