課程簡介
隨著互聯(lián)網(wǎng)的發(fā)展,很多大型網(wǎng)站或系統(tǒng)要處理海量的用戶訪問,需要解決高并發(fā)、高可用和由此帶來的數(shù)據(jù)一致性問題,這也使得大家把大部分精力都用在了解決這些問題上面。我把這些問題稱為“顯性問題”,因為如果解決不好,會造成系統(tǒng)宕機(jī),用戶體驗受損,給企業(yè)帶來嚴(yán)重?fù)p失,大家都能意識到這種問題很重要。解決的思路通常有兩個:第一,利用分布式系統(tǒng)的特性,不斷地分拆,把大系統(tǒng)拆小,降低風(fēng)險,各個擊破;第二,小步快跑,快速迭代,設(shè)計不合理沒關(guān)系,可以不斷重構(gòu),不斷發(fā)布新版本。
但還有一類問題是“隱性問題”,是指系統(tǒng)的可重用性、可擴(kuò)展性、可維護(hù)性等。因為一個系統(tǒng)由于設(shè)計得不好導(dǎo)致研發(fā)人力的投入和時間成本的增加,往往是沒有辦法顯式地衡量的??赡懿皇窍到y(tǒng)設(shè)計得不好,而是業(yè)務(wù)本身就很復(fù)雜,又或者各部門之間的溝通協(xié)調(diào)問題,所以導(dǎo)致開發(fā)效率低。再說,即使系統(tǒng)設(shè)計得不好,做新功能有沉重的歷史包袱,還能通過加班加點解決。但其實“隱性問題”比“顯性問題”影響更大,因為它會讓技術(shù)拖業(yè)務(wù)后腿,當(dāng)有新需求的時候,系統(tǒng)無法跟隨業(yè)務(wù)快速變化。
本課程希望同時深入討論這兩方面問題,從而打通技術(shù)和業(yè)務(wù)的任督二脈。
目標(biāo)收益
(1) 對高并發(fā)、高可用系統(tǒng)的設(shè)計,形成一個方法論。
(2) 對業(yè)務(wù)建模、DDD,形成一個直觀認(rèn)識,可以落地
(3) 對架構(gòu)體系形成一個宏觀把握,幫助自身職業(yè)生涯更上一步。
(4) 對產(chǎn)品、業(yè)務(wù)、技術(shù)的分工與協(xié)作,有更清楚的認(rèn)識。
培訓(xùn)對象
開發(fā)大型網(wǎng)站、大型后臺系統(tǒng)的軟件架構(gòu)師、技術(shù)Leader、程序員、產(chǎn)品經(jīng)理;管理多個研發(fā)團(tuán)隊的技術(shù)負(fù)責(zé)人
該培訓(xùn)對于開發(fā)以下類型系統(tǒng)特別有幫助:
1、用戶訪問量大,高并發(fā)、高可用系統(tǒng)
2、業(yè)務(wù)邏輯特別復(fù)雜
3、研發(fā)團(tuán)隊規(guī)模特別大,上千人
課程大綱
引子 |
面對大型系統(tǒng),經(jīng)常會遇到2類技術(shù)人員和團(tuán)隊: (1)技術(shù)功底不錯,但不懂業(yè)務(wù),導(dǎo)致系統(tǒng)邊界混亂、團(tuán)隊分工不明確、接口設(shè)計不合理、系統(tǒng)難理解;(2)懂業(yè)務(wù),但技術(shù)不夠,無法很好處理高并發(fā)、高可用、性能等問題。 該課程希望重點來討論這2類問題,最終把業(yè)務(wù)和技術(shù)很好的融合起來,從而讓大家形成一個完整的知識體系 |
第一單元 高并發(fā)問題 |
該單元介紹高并發(fā)問題的經(jīng)典解決方案:1. 高并發(fā)讀 (1)緩存 (2)并發(fā)讀 (3)重寫輕讀 2.高并發(fā)寫: (1)數(shù)據(jù)分片 (2)任務(wù)分片 (3)異步 (4)批量 (5)串行化 + 異步IO |
第二單元 高可用問題 |
該單元介紹高可用問題的經(jīng)典解決方案: (1)多副本。雞蛋不要放在一個籃子里。 (2)隔離、限流、熔斷、降級 Netflex的Hystrix,阿里的Sentinel (3)灰度發(fā)布、回滾 (4)監(jiān)控體系:資源監(jiān)控、系統(tǒng)監(jiān)控、業(yè)務(wù)監(jiān)控 |
第三單元 分布式事務(wù) |
該單元介紹分布式事務(wù)的經(jīng)典解決方案: (1)2PC (2)最終一致性(消息中間件) (3)TCC (4)事務(wù)狀態(tài)表+調(diào)用方重試+接收方冪等 (5)對賬 (6)妥協(xié)方案:弱一致性+基于狀態(tài)的補(bǔ)償 (7)妥協(xié)方案:重試+回滾+報警+人工修復(fù) |
第四單元 一致性算法(Paxos/Raft/Zab) |
該單元介紹經(jīng)典的3種一致性算法以及業(yè)界的一些產(chǎn)品: 1.Paxos算法 ? 騰訊的PhxPaxos、PhxSQL、PaxosStore ? 阿里的AliSQL X-Cluster、X-Paxos ? MySQL的MGR ? Google的Chubby 2. Raft算法 ? 阿里的RDS(Relation Database Service) ? etcd ? TiDB ? 百度開源的bRaft ? 唯品會的VDL 3. Zab算法 Zookeeper |
第五單元 業(yè)務(wù)架構(gòu)思維 |
從需要分析到業(yè)務(wù)建模的常用思維模式: (1) 分層 (2) 邊界思維 (3) 系統(tǒng)化思維 (4) 利益相關(guān)者分析 (5) 非功能性需求分析(以終為始) (6) 視角(架構(gòu)4+1/5+1視圖) (7) 抽象 (8) 建模 (9) 正交分解 |
第六單元 DDD |
通俗的闡釋DDD: (1)各式各樣的方法論 (2) 為什么要“領(lǐng)域驅(qū)動” (3)“業(yè)務(wù)流程”不等于“系統(tǒng)流程” (4) 為何很難設(shè)計一個好的領(lǐng)域模型 (5) 領(lǐng)域驅(qū)動設(shè)計與微服務(wù)架構(gòu)的“合” (6) 領(lǐng)域驅(qū)動設(shè)計與讀寫分離(CQRS) |
第7單元 技術(shù)架構(gòu)與業(yè)務(wù)架構(gòu)融合 |
技術(shù)架構(gòu)與業(yè)務(wù)架構(gòu)融合設(shè)計 (1) 軟件開發(fā)生命周期 (2) 草圖與概念圖 (3) 領(lǐng)域模型設(shè)計 (4) 4+1視圖 (5) 微服務(wù)拆解 (6) 走查與反向修正 |
第8單元 團(tuán)隊管理 |
1. 管項目 2. 管業(yè)務(wù)3. 管人 1. 項目管理 如何推動項目按時、按質(zhì)完成 2. 業(yè)務(wù)管理 如何達(dá)成業(yè)務(wù)目標(biāo) 3. 團(tuán)隊管理 團(tuán)隊培養(yǎng)與團(tuán)隊規(guī)劃 |
引子 面對大型系統(tǒng),經(jīng)常會遇到2類技術(shù)人員和團(tuán)隊: (1)技術(shù)功底不錯,但不懂業(yè)務(wù),導(dǎo)致系統(tǒng)邊界混亂、團(tuán)隊分工不明確、接口設(shè)計不合理、系統(tǒng)難理解;(2)懂業(yè)務(wù),但技術(shù)不夠,無法很好處理高并發(fā)、高可用、性能等問題。 該課程希望重點來討論這2類問題,最終把業(yè)務(wù)和技術(shù)很好的融合起來,從而讓大家形成一個完整的知識體系 |
第一單元 高并發(fā)問題 該單元介紹高并發(fā)問題的經(jīng)典解決方案:1. 高并發(fā)讀 (1)緩存 (2)并發(fā)讀 (3)重寫輕讀 2.高并發(fā)寫: (1)數(shù)據(jù)分片 (2)任務(wù)分片 (3)異步 (4)批量 (5)串行化 + 異步IO |
第二單元 高可用問題 該單元介紹高可用問題的經(jīng)典解決方案: (1)多副本。雞蛋不要放在一個籃子里。 (2)隔離、限流、熔斷、降級 Netflex的Hystrix,阿里的Sentinel (3)灰度發(fā)布、回滾 (4)監(jiān)控體系:資源監(jiān)控、系統(tǒng)監(jiān)控、業(yè)務(wù)監(jiān)控 |
第三單元 分布式事務(wù) 該單元介紹分布式事務(wù)的經(jīng)典解決方案: (1)2PC (2)最終一致性(消息中間件) (3)TCC (4)事務(wù)狀態(tài)表+調(diào)用方重試+接收方冪等 (5)對賬 (6)妥協(xié)方案:弱一致性+基于狀態(tài)的補(bǔ)償 (7)妥協(xié)方案:重試+回滾+報警+人工修復(fù) |
第四單元 一致性算法(Paxos/Raft/Zab) 該單元介紹經(jīng)典的3種一致性算法以及業(yè)界的一些產(chǎn)品: 1.Paxos算法 ? 騰訊的PhxPaxos、PhxSQL、PaxosStore ? 阿里的AliSQL X-Cluster、X-Paxos ? MySQL的MGR ? Google的Chubby 2. Raft算法 ? 阿里的RDS(Relation Database Service) ? etcd ? TiDB ? 百度開源的bRaft ? 唯品會的VDL 3. Zab算法 Zookeeper |
第五單元 業(yè)務(wù)架構(gòu)思維 從需要分析到業(yè)務(wù)建模的常用思維模式: (1) 分層 (2) 邊界思維 (3) 系統(tǒng)化思維 (4) 利益相關(guān)者分析 (5) 非功能性需求分析(以終為始) (6) 視角(架構(gòu)4+1/5+1視圖) (7) 抽象 (8) 建模 (9) 正交分解 |
第六單元 DDD 通俗的闡釋DDD: (1)各式各樣的方法論 (2) 為什么要“領(lǐng)域驅(qū)動” (3)“業(yè)務(wù)流程”不等于“系統(tǒng)流程” (4) 為何很難設(shè)計一個好的領(lǐng)域模型 (5) 領(lǐng)域驅(qū)動設(shè)計與微服務(wù)架構(gòu)的“合” (6) 領(lǐng)域驅(qū)動設(shè)計與讀寫分離(CQRS) |
第7單元 技術(shù)架構(gòu)與業(yè)務(wù)架構(gòu)融合 技術(shù)架構(gòu)與業(yè)務(wù)架構(gòu)融合設(shè)計 (1) 軟件開發(fā)生命周期 (2) 草圖與概念圖 (3) 領(lǐng)域模型設(shè)計 (4) 4+1視圖 (5) 微服務(wù)拆解 (6) 走查與反向修正 |
第8單元 團(tuán)隊管理 1. 管項目 2. 管業(yè)務(wù)3. 管人 1. 項目管理 如何推動項目按時、按質(zhì)完成 2. 業(yè)務(wù)管理 如何達(dá)成業(yè)務(wù)目標(biāo) 3. 團(tuán)隊管理 團(tuán)隊培養(yǎng)與團(tuán)隊規(guī)劃 |