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