課程簡(jiǎn)介
隨著網(wǎng)絡(luò)與信息技術(shù)的高速發(fā)展,軟件研發(fā)逐漸朝著大規(guī)模、高復(fù)雜度的大型軟件系統(tǒng)發(fā)展。特別是隨著近幾年互聯(lián)網(wǎng)的高速發(fā)展,帶動(dòng)著全行業(yè)的互聯(lián)網(wǎng)轉(zhuǎn)型,使得未來(lái)的軟件系統(tǒng)還將向著持續(xù)性、深層次架構(gòu)調(diào)整的方向發(fā)展。在這樣的背景下,如何從全局的角度思考軟件系統(tǒng)方方面面的問(wèn)題,提前識(shí)別軟件項(xiàng)目的技術(shù)風(fēng)險(xiǎn)點(diǎn),并有針對(duì)性地制訂技術(shù)方案,以及如何構(gòu)建一個(gè)更加靈活、易于調(diào)整、快速變化的軟件系統(tǒng),成為大型軟件系統(tǒng)至關(guān)重要的設(shè)計(jì)內(nèi)容。
目標(biāo)收益
本課程首先將系統(tǒng)地講述高質(zhì)量的軟件架構(gòu)該設(shè)計(jì)過(guò)程,包括如何運(yùn)用領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的思想貫穿整個(gè)架構(gòu)設(shè)計(jì),又如何使軟件系統(tǒng)在衍變中調(diào)整架構(gòu),從而適應(yīng)需求的變化;如何運(yùn)用5視圖的方法,全面地思考軟件架構(gòu)各方面的問(wèn)題:從需求的角度進(jìn)行可行性分析;從全局的角度進(jìn)行軟件分層、技術(shù)選型、模塊劃分等方面的設(shè)計(jì);運(yùn)用數(shù)據(jù)持久化的方式設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu);運(yùn)用“屬性->場(chǎng)景->決策”的過(guò)程把握非功能設(shè)計(jì);從部署、網(wǎng)絡(luò)、性能的角度進(jìn)行物理架構(gòu)的設(shè)計(jì),從而有效避免架構(gòu)設(shè)計(jì)時(shí)遺漏關(guān)鍵風(fēng)險(xiǎn)點(diǎn),使架構(gòu)設(shè)計(jì)過(guò)程變得有序。
培訓(xùn)對(duì)象
中高級(jí)工程師、企業(yè)架構(gòu)師、軟件設(shè)計(jì)師、數(shù)據(jù)庫(kù)/存儲(chǔ)技術(shù)人員、技術(shù)決策/解決方案人員等。
課程大綱
第一部分 高質(zhì)量架構(gòu)設(shè)計(jì) 第一單元 軟件架構(gòu)設(shè)計(jì)概述 |
情景?。很浖軜?gòu)設(shè)計(jì)的價(jià)值 1. 一個(gè)人的軟件設(shè)計(jì)過(guò)程 2. 5個(gè)人的軟件設(shè)計(jì)過(guò)程 3. 10個(gè)人的軟件設(shè)計(jì)過(guò)程 4. 10個(gè)人以上的軟件設(shè)計(jì)過(guò)程 結(jié)論:揭示架構(gòu)設(shè)計(jì)的價(jià)值與架構(gòu)師的作用 架構(gòu)設(shè)計(jì)5視圖法: 1. 介紹架構(gòu)設(shè)計(jì)5視圖法 2. 運(yùn)用5視圖法設(shè)計(jì)軟件架構(gòu)的過(guò)程 |
第二單元 邏輯架構(gòu)設(shè)計(jì)過(guò)程 |
案例講解邏輯架構(gòu)的設(shè)計(jì)過(guò)程 1. 邏輯架構(gòu)的概念與作用 2. 需求分析與用例模型設(shè)計(jì) ? 由粗到細(xì)的需求分析過(guò)程 ? 不同類(lèi)型的用例描述 3. 流程分析與行動(dòng)圖 4. 領(lǐng)域模型分析 ? 講解領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的思想 ? 在需求討論中繪制領(lǐng)域模型 ? 用原文分析法進(jìn)行領(lǐng)域分析 5. 需求確認(rèn)與可行性分析 ? 探討需求不可行給項(xiàng)目帶來(lái)的風(fēng)險(xiǎn) ? 案例講解主動(dòng)式需求分析的過(guò)程 |
第三單元 開(kāi)發(fā)架構(gòu)設(shè)計(jì)過(guò)程 |
案例講解開(kāi)發(fā)架構(gòu)的設(shè)計(jì)過(guò)程 1. 開(kāi)發(fā)架構(gòu)的概念與作用 2. 討論合理的分層架構(gòu) 案例:演示一個(gè)工資系統(tǒng)的需求變更過(guò)程 ? 展示三次巨大需求變更及其分析設(shè)計(jì)過(guò)程 ? 探討什么樣的架構(gòu)能真正適應(yīng)需求的變更 3. 技術(shù)選型與決策 4. 軟件架構(gòu)設(shè)計(jì) ? 案例講解軟件的可擴(kuò)展設(shè)計(jì) ? 案例講解軟件的易維護(hù)設(shè)計(jì) 5. 模塊劃分與分包 6. 軟件開(kāi)發(fā)規(guī)范的制訂 |
第四單元 數(shù)據(jù)架構(gòu)設(shè)計(jì)過(guò)程 |
探討傳統(tǒng)的數(shù)據(jù)架構(gòu)設(shè)計(jì)過(guò)程 講解基于領(lǐng)域的數(shù)據(jù)架構(gòu)設(shè)計(jì)過(guò)程 1. 如何將領(lǐng)域模型轉(zhuǎn)換為數(shù)據(jù)庫(kù)設(shè)計(jì) ? 傳統(tǒng)的4種關(guān)系轉(zhuǎn)換為數(shù)據(jù)庫(kù)設(shè)計(jì) ? 繼承關(guān)系的3種數(shù)據(jù)庫(kù)設(shè)計(jì) 2. 如何將領(lǐng)域模型轉(zhuǎn)換為軟件 貧血模型 vs. 充血模型 |
第五單位 運(yùn)行架構(gòu)設(shè)計(jì)過(guò)程 |
探討運(yùn)行架構(gòu)的設(shè)計(jì)過(guò)程 1. 關(guān)注關(guān)鍵點(diǎn)與難點(diǎn)而不是全局 2. 屬性→場(chǎng)景→決策的分析過(guò)程 專(zhuān)題討論運(yùn)行架構(gòu)需要決策的內(nèi)容 1. 并發(fā)訪問(wèn)與串行操作 2. 同步操作與異步操作 3. 進(jìn)程與線程 |
第六單元 物理架構(gòu)設(shè)計(jì)過(guò)程 |
探討物理架構(gòu)設(shè)計(jì)過(guò)程 1. 案例講解一些常見(jiàn)物理架構(gòu)設(shè)計(jì) 2. 案例講解應(yīng)用架構(gòu)設(shè)計(jì) 3. 案例講解一些技術(shù)方案的編寫(xiě) |
第七單元 逐步演化的架構(gòu)設(shè)計(jì) |
恰如其分的架構(gòu)設(shè)計(jì) 1. 恰如其分的架構(gòu)設(shè)計(jì)過(guò)程 案例:一個(gè)郵件系統(tǒng)的架構(gòu)演變過(guò)程 2. 風(fēng)險(xiǎn)驅(qū)動(dòng)的架構(gòu)設(shè)計(jì) 逐步演化的架構(gòu)設(shè)計(jì)過(guò)程 1. 探討老系統(tǒng)維護(hù)過(guò)程中架構(gòu)設(shè)計(jì)的問(wèn)題 2. 剖析以往采取的辦法及失敗的原因 ? 縫縫補(bǔ)補(bǔ)不能從根本上解決 ? 走一步退兩步淺嘗輒止的根源 ? 拋棄一切從頭再來(lái)的風(fēng)險(xiǎn) 3. 剖析問(wèn)題的根源與解決的辦法 ? 演化式改造的過(guò)程 ? 平臺(tái)建設(shè)與重構(gòu)并行 ? 改造與維護(hù)并舉 剖析架構(gòu)設(shè)計(jì)中的一些常見(jiàn)誤區(qū) |
第二部分互聯(lián)網(wǎng)架構(gòu)設(shè)計(jì) 第八單元 大并發(fā)相關(guān)的指標(biāo) |
高并發(fā)相關(guān)的指標(biāo) 1. 吞吐量 / 每秒事務(wù)數(shù) / 事務(wù)響應(yīng)時(shí)間 2. 用戶(hù)數(shù) / 用戶(hù)并發(fā)數(shù) / 最大用戶(hù)并發(fā)數(shù) 高并發(fā)問(wèn)題的解決思路 1. 目標(biāo)→問(wèn)題→方案 2. 業(yè)務(wù)梳理與優(yōu)化 |
第九單元 并發(fā)問(wèn)題的快速優(yōu)化策略 |
傳統(tǒng)架構(gòu)的演變過(guò)程 1. All-in-One的架構(gòu)設(shè)計(jì) 2. 多級(jí)集中的架構(gòu)設(shè)計(jì) 3. 傳統(tǒng)架構(gòu)面臨的挑戰(zhàn) 基于風(fēng)險(xiǎn)的架構(gòu)設(shè)計(jì)思想 1. 先識(shí)別未來(lái)存在的風(fēng)險(xiǎn),再進(jìn)行有針對(duì)的架構(gòu)設(shè)計(jì) 2. 用最快的速度解決最急迫的問(wèn)題 并發(fā)問(wèn)題的快速優(yōu)化策略 1. 智能DNS及其優(yōu)缺點(diǎn) 2. CDN內(nèi)容分發(fā)網(wǎng)絡(luò)及其優(yōu)缺點(diǎn) 3. 負(fù)載均衡與反向代理 1)Nginx技術(shù)及其解決的問(wèn)題 2)動(dòng)靜分離的設(shè)計(jì) 3)Zookeeper及其非中心化設(shè)計(jì) |
第十單元 數(shù)據(jù)庫(kù)瓶頸及其優(yōu)化策略 |
數(shù)據(jù)庫(kù)瓶頸 1. 現(xiàn)有數(shù)據(jù)庫(kù)設(shè)計(jì)及其性能瓶 2. Shared Disk vs. Shared Nothing 3. 介紹PostgreSQL與GreenPlum 數(shù)據(jù)庫(kù)讀寫(xiě)分離的設(shè)計(jì) 1. 三種不同類(lèi)型的操作及其優(yōu)化策略 業(yè)務(wù)操作 / 隨機(jī)查詢(xún) / 統(tǒng)計(jì)分析 2. MySQL主從機(jī)實(shí)現(xiàn)讀寫(xiě)分離 1)MySQL主從機(jī)實(shí)現(xiàn)讀寫(xiě)分離的思想與局限 2)在原有系統(tǒng)上實(shí)現(xiàn)讀寫(xiě)分離的改造過(guò)程 3. 真正實(shí)現(xiàn)讀寫(xiě)分離的設(shè)計(jì)方案 數(shù)據(jù)庫(kù)分庫(kù)的設(shè)計(jì)思想 1. 縱向拆分的設(shè)計(jì)思想及其注意的問(wèn)題 案例:國(guó)家金稅三期的架構(gòu)設(shè)計(jì) 案例:阿里巴巴的架構(gòu)設(shè)計(jì) 2. 橫向拆分的設(shè)計(jì)思想及其注意的問(wèn)題 1)按地域拆分的設(shè)計(jì)及其評(píng)價(jià) 2)按用戶(hù)號(hào)進(jìn)行拆分的設(shè)計(jì)及其評(píng)價(jià) 案例:淘寶網(wǎng)的架構(gòu)設(shè)計(jì)解析 3. 在原有系統(tǒng)上如何實(shí)現(xiàn)數(shù)據(jù)庫(kù)分庫(kù) 1)縱向拆分的系統(tǒng)改造過(guò)程 2)橫向拆分的系統(tǒng)改造過(guò)程 |
第十一單元 應(yīng)用緩存的設(shè)計(jì) |
應(yīng)用緩存技術(shù) 1. 應(yīng)用緩存技術(shù)解決的問(wèn)題 2. 單機(jī)緩存 vs. 分布式緩存 3. 分布式緩存的特點(diǎn)及其設(shè)計(jì) Memcached技術(shù) 1. Memcached技術(shù)及其特點(diǎn) 2. 分布式哈希算法及其一致性哈希 3. Memcached的部署結(jié)構(gòu)及其應(yīng)用方案 案例:負(fù)載均衡的session同步及其故障轉(zhuǎn)移 如何在原有系統(tǒng)上進(jìn)行應(yīng)用緩存改造 1. Spring + Memcached的設(shè)計(jì)改造過(guò)程 2. Hibernate + Memcached的設(shè)計(jì)改造過(guò)程 3. Memcached的命中率分析及其調(diào)優(yōu) 4. 應(yīng)用緩存的設(shè)計(jì)過(guò)程中應(yīng)當(dāng)注意的問(wèn)題 |
第十二單元 內(nèi)存數(shù)據(jù)庫(kù)的設(shè)計(jì) |
內(nèi)存數(shù)據(jù)庫(kù)技術(shù) 1. 內(nèi)存數(shù)據(jù)庫(kù)的概念 2. 解析內(nèi)存數(shù)據(jù)庫(kù)的運(yùn)行原理 3. Oracle TimesTen的介紹 4. Gemfire及其在12306的應(yīng)用 Redis內(nèi)存數(shù)據(jù)庫(kù)技術(shù) 1. Redis的運(yùn)行原理及其特點(diǎn) 2. Redis的部署形式 3. Redis的應(yīng)用設(shè)計(jì) 案例:spring-redis-data的設(shè)計(jì)應(yīng)用 案例:京東訂單系統(tǒng)的優(yōu)化過(guò)程 4. 內(nèi)存數(shù)據(jù)庫(kù)的設(shè)計(jì)局限 |
第十三單元 異步化操作的設(shè)計(jì) |
1. 異步化操作的原理 案例:12306的異步化改造過(guò)程 2. 異步化操作的設(shè)計(jì)實(shí)踐 3. 分布式隊(duì)列的設(shè)計(jì) |
第十四單元 互聯(lián)網(wǎng)不斷演進(jìn)的架構(gòu)設(shè)計(jì)過(guò)程 |
互聯(lián)網(wǎng)+時(shí)代的架構(gòu)設(shè)計(jì)特點(diǎn) 1. 互聯(lián)網(wǎng)+帶來(lái)的巨大變革 2. 互聯(lián)網(wǎng)公司不斷面對(duì)的升級(jí)改造 3. 傳統(tǒng)行業(yè)必須面對(duì)的互聯(lián)網(wǎng)轉(zhuǎn)型 好的架構(gòu)源于不斷的衍變 案例:58同城的架構(gòu)衍變過(guò)程 1. 最初的架構(gòu)設(shè)計(jì) 2. 網(wǎng)絡(luò)接入層的改造過(guò)程 3. 數(shù)據(jù)庫(kù)拆分的改造過(guò)程 4. 服務(wù)化為中心的改造過(guò)程 |
第十五單元 大并發(fā)架構(gòu)設(shè)計(jì)的驗(yàn)證 |
1. 設(shè)計(jì)測(cè)試用例與場(chǎng)景 2. 錄制測(cè)試腳本執(zhí)行測(cè)試 3. 測(cè)試結(jié)果的評(píng)價(jià)與調(diào)優(yōu) 4. 編寫(xiě)性能測(cè)試報(bào)告 案例:某大型互聯(lián)網(wǎng)開(kāi)票系統(tǒng)的架構(gòu)驗(yàn)證過(guò)程 |
第三部分針對(duì)大數(shù)據(jù)的架構(gòu)設(shè)計(jì) 第十六單元 NoSQL數(shù)據(jù)庫(kù)及其設(shè)計(jì) |
NoSQL數(shù)據(jù)庫(kù)的概念 1. 分布式架構(gòu)與CAP理論 2. ACID vs. BASE 3. 強(qiáng)一致性與弱一致性 4. NoSQL數(shù)據(jù)庫(kù)的特點(diǎn) MongoDB數(shù)據(jù)庫(kù) 1. MongoDB數(shù)據(jù)庫(kù)簡(jiǎn)介 2. MongoDB數(shù)據(jù)庫(kù)的概念模型 3. 插入、更新、刪除、查詢(xún)操作 案例:MongoDB實(shí)現(xiàn)企業(yè)征信報(bào)告的海量存儲(chǔ)與快速查詢(xún) 4. MongoDB數(shù)據(jù)庫(kù)的優(yōu)劣勢(shì)分析與適用范圍 |
第十七單元 Hadoop大數(shù)據(jù)處理技術(shù) |
Hadoop大數(shù)據(jù)處理技術(shù) 1. Hadoop簡(jiǎn)介 2. Hadoop生態(tài)圈 3. Hadoop架構(gòu)及其與傳統(tǒng)架構(gòu)的優(yōu)勢(shì) Hadoop的核心組件 1. 解析HDFS分布式文件系統(tǒng)的運(yùn)行原理 2. 解析MapReduce分布式運(yùn)算框架的運(yùn)行原理 3. MapReduce的優(yōu)劣勢(shì)與適用范圍 案例:WordCount詞頻計(jì)算程序的分析設(shè)計(jì)過(guò)程 Hadoop的生態(tài)圈 1. Hive技術(shù) 1)Hive技術(shù)簡(jiǎn)介 2)Hive與傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)的比較 3)Hive的建表、載入數(shù)據(jù)、查詢(xún)數(shù)據(jù)的語(yǔ)句 2. Spark技術(shù) 1)Spark設(shè)計(jì)原理 2)Spark編程實(shí)踐 案例:Spark小步快跑的設(shè)計(jì)過(guò)程 3. Sqoop技術(shù) 1)Sqoop技術(shù)簡(jiǎn)介 2)Sqoop導(dǎo)入語(yǔ)句 3)Sqoop導(dǎo)出語(yǔ)句 4. HBase數(shù)據(jù)庫(kù) 1)HBase數(shù)據(jù)庫(kù)的簡(jiǎn)介 2)HBase數(shù)據(jù)庫(kù)的概念模型 3)HBase的面向列式存儲(chǔ) 4)HBase的系統(tǒng)架構(gòu) 案例:用HBase存儲(chǔ)與展示搜索結(jié)果 5. ElasticSearch搜索引擎 1)ElasticSearch設(shè)計(jì)原理 2)ElasticSearch+Hive的設(shè)計(jì)方案 3)ElasticSearch的RUSTful數(shù)據(jù)搜索 案例:如何實(shí)現(xiàn)海量數(shù)據(jù)秒級(jí)響應(yīng) Hadoop的安裝部署 1. Hadoop的物理部署架構(gòu) 2. Hadoop的技術(shù)選型 3. Hadoop的組件部署結(jié)構(gòu) |
第十八單元 面向主題的數(shù)據(jù)倉(cāng)庫(kù)設(shè)計(jì) |
數(shù)據(jù)倉(cāng)庫(kù)的概念 1. 大范圍數(shù)據(jù)統(tǒng)計(jì)的操作特點(diǎn)與設(shè)計(jì)思路 2. 數(shù)據(jù)倉(cāng)庫(kù)的架構(gòu)設(shè)計(jì) 大數(shù)據(jù)環(huán)境下的數(shù)據(jù)倉(cāng)庫(kù)設(shè)計(jì) 1. 大數(shù)據(jù)環(huán)境下數(shù)據(jù)倉(cāng)庫(kù)設(shè)計(jì)面臨的困境 2. 講解海量數(shù)據(jù)的多維數(shù)據(jù)模型設(shè)計(jì)方案 案例:HBase實(shí)現(xiàn)大數(shù)據(jù)多維模型 案例:企業(yè)征信大數(shù)據(jù)的設(shè)計(jì)過(guò)程 3. 淺析數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)過(guò)程 傳統(tǒng)BI系統(tǒng)的大數(shù)據(jù)轉(zhuǎn)型 1. 傳統(tǒng)BI系統(tǒng)面臨的難題 2. 案例講解演化式BI轉(zhuǎn)型過(guò)程 |
第一部分 高質(zhì)量架構(gòu)設(shè)計(jì) 第一單元 軟件架構(gòu)設(shè)計(jì)概述 情景?。很浖軜?gòu)設(shè)計(jì)的價(jià)值 1. 一個(gè)人的軟件設(shè)計(jì)過(guò)程 2. 5個(gè)人的軟件設(shè)計(jì)過(guò)程 3. 10個(gè)人的軟件設(shè)計(jì)過(guò)程 4. 10個(gè)人以上的軟件設(shè)計(jì)過(guò)程 結(jié)論:揭示架構(gòu)設(shè)計(jì)的價(jià)值與架構(gòu)師的作用 架構(gòu)設(shè)計(jì)5視圖法: 1. 介紹架構(gòu)設(shè)計(jì)5視圖法 2. 運(yùn)用5視圖法設(shè)計(jì)軟件架構(gòu)的過(guò)程 |
第二單元 邏輯架構(gòu)設(shè)計(jì)過(guò)程 案例講解邏輯架構(gòu)的設(shè)計(jì)過(guò)程 1. 邏輯架構(gòu)的概念與作用 2. 需求分析與用例模型設(shè)計(jì) ? 由粗到細(xì)的需求分析過(guò)程 ? 不同類(lèi)型的用例描述 3. 流程分析與行動(dòng)圖 4. 領(lǐng)域模型分析 ? 講解領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的思想 ? 在需求討論中繪制領(lǐng)域模型 ? 用原文分析法進(jìn)行領(lǐng)域分析 5. 需求確認(rèn)與可行性分析 ? 探討需求不可行給項(xiàng)目帶來(lái)的風(fēng)險(xiǎn) ? 案例講解主動(dòng)式需求分析的過(guò)程 |
第三單元 開(kāi)發(fā)架構(gòu)設(shè)計(jì)過(guò)程 案例講解開(kāi)發(fā)架構(gòu)的設(shè)計(jì)過(guò)程 1. 開(kāi)發(fā)架構(gòu)的概念與作用 2. 討論合理的分層架構(gòu) 案例:演示一個(gè)工資系統(tǒng)的需求變更過(guò)程 ? 展示三次巨大需求變更及其分析設(shè)計(jì)過(guò)程 ? 探討什么樣的架構(gòu)能真正適應(yīng)需求的變更 3. 技術(shù)選型與決策 4. 軟件架構(gòu)設(shè)計(jì) ? 案例講解軟件的可擴(kuò)展設(shè)計(jì) ? 案例講解軟件的易維護(hù)設(shè)計(jì) 5. 模塊劃分與分包 6. 軟件開(kāi)發(fā)規(guī)范的制訂 |
第四單元 數(shù)據(jù)架構(gòu)設(shè)計(jì)過(guò)程 探討傳統(tǒng)的數(shù)據(jù)架構(gòu)設(shè)計(jì)過(guò)程 講解基于領(lǐng)域的數(shù)據(jù)架構(gòu)設(shè)計(jì)過(guò)程 1. 如何將領(lǐng)域模型轉(zhuǎn)換為數(shù)據(jù)庫(kù)設(shè)計(jì) ? 傳統(tǒng)的4種關(guān)系轉(zhuǎn)換為數(shù)據(jù)庫(kù)設(shè)計(jì) ? 繼承關(guān)系的3種數(shù)據(jù)庫(kù)設(shè)計(jì) 2. 如何將領(lǐng)域模型轉(zhuǎn)換為軟件 貧血模型 vs. 充血模型 |
第五單位 運(yùn)行架構(gòu)設(shè)計(jì)過(guò)程 探討運(yùn)行架構(gòu)的設(shè)計(jì)過(guò)程 1. 關(guān)注關(guān)鍵點(diǎn)與難點(diǎn)而不是全局 2. 屬性→場(chǎng)景→決策的分析過(guò)程 專(zhuān)題討論運(yùn)行架構(gòu)需要決策的內(nèi)容 1. 并發(fā)訪問(wèn)與串行操作 2. 同步操作與異步操作 3. 進(jìn)程與線程 |
第六單元 物理架構(gòu)設(shè)計(jì)過(guò)程 探討物理架構(gòu)設(shè)計(jì)過(guò)程 1. 案例講解一些常見(jiàn)物理架構(gòu)設(shè)計(jì) 2. 案例講解應(yīng)用架構(gòu)設(shè)計(jì) 3. 案例講解一些技術(shù)方案的編寫(xiě) |
第七單元 逐步演化的架構(gòu)設(shè)計(jì) 恰如其分的架構(gòu)設(shè)計(jì) 1. 恰如其分的架構(gòu)設(shè)計(jì)過(guò)程 案例:一個(gè)郵件系統(tǒng)的架構(gòu)演變過(guò)程 2. 風(fēng)險(xiǎn)驅(qū)動(dòng)的架構(gòu)設(shè)計(jì) 逐步演化的架構(gòu)設(shè)計(jì)過(guò)程 1. 探討老系統(tǒng)維護(hù)過(guò)程中架構(gòu)設(shè)計(jì)的問(wèn)題 2. 剖析以往采取的辦法及失敗的原因 ? 縫縫補(bǔ)補(bǔ)不能從根本上解決 ? 走一步退兩步淺嘗輒止的根源 ? 拋棄一切從頭再來(lái)的風(fēng)險(xiǎn) 3. 剖析問(wèn)題的根源與解決的辦法 ? 演化式改造的過(guò)程 ? 平臺(tái)建設(shè)與重構(gòu)并行 ? 改造與維護(hù)并舉 剖析架構(gòu)設(shè)計(jì)中的一些常見(jiàn)誤區(qū) |
第二部分互聯(lián)網(wǎng)架構(gòu)設(shè)計(jì) 第八單元 大并發(fā)相關(guān)的指標(biāo) 高并發(fā)相關(guān)的指標(biāo) 1. 吞吐量 / 每秒事務(wù)數(shù) / 事務(wù)響應(yīng)時(shí)間 2. 用戶(hù)數(shù) / 用戶(hù)并發(fā)數(shù) / 最大用戶(hù)并發(fā)數(shù) 高并發(fā)問(wèn)題的解決思路 1. 目標(biāo)→問(wèn)題→方案 2. 業(yè)務(wù)梳理與優(yōu)化 |
第九單元 并發(fā)問(wèn)題的快速優(yōu)化策略 傳統(tǒng)架構(gòu)的演變過(guò)程 1. All-in-One的架構(gòu)設(shè)計(jì) 2. 多級(jí)集中的架構(gòu)設(shè)計(jì) 3. 傳統(tǒng)架構(gòu)面臨的挑戰(zhàn) 基于風(fēng)險(xiǎn)的架構(gòu)設(shè)計(jì)思想 1. 先識(shí)別未來(lái)存在的風(fēng)險(xiǎn),再進(jìn)行有針對(duì)的架構(gòu)設(shè)計(jì) 2. 用最快的速度解決最急迫的問(wèn)題 并發(fā)問(wèn)題的快速優(yōu)化策略 1. 智能DNS及其優(yōu)缺點(diǎn) 2. CDN內(nèi)容分發(fā)網(wǎng)絡(luò)及其優(yōu)缺點(diǎn) 3. 負(fù)載均衡與反向代理 1)Nginx技術(shù)及其解決的問(wèn)題 2)動(dòng)靜分離的設(shè)計(jì) 3)Zookeeper及其非中心化設(shè)計(jì) |
第十單元 數(shù)據(jù)庫(kù)瓶頸及其優(yōu)化策略 數(shù)據(jù)庫(kù)瓶頸 1. 現(xiàn)有數(shù)據(jù)庫(kù)設(shè)計(jì)及其性能瓶 2. Shared Disk vs. Shared Nothing 3. 介紹PostgreSQL與GreenPlum 數(shù)據(jù)庫(kù)讀寫(xiě)分離的設(shè)計(jì) 1. 三種不同類(lèi)型的操作及其優(yōu)化策略 業(yè)務(wù)操作 / 隨機(jī)查詢(xún) / 統(tǒng)計(jì)分析 2. MySQL主從機(jī)實(shí)現(xiàn)讀寫(xiě)分離 1)MySQL主從機(jī)實(shí)現(xiàn)讀寫(xiě)分離的思想與局限 2)在原有系統(tǒng)上實(shí)現(xiàn)讀寫(xiě)分離的改造過(guò)程 3. 真正實(shí)現(xiàn)讀寫(xiě)分離的設(shè)計(jì)方案 數(shù)據(jù)庫(kù)分庫(kù)的設(shè)計(jì)思想 1. 縱向拆分的設(shè)計(jì)思想及其注意的問(wèn)題 案例:國(guó)家金稅三期的架構(gòu)設(shè)計(jì) 案例:阿里巴巴的架構(gòu)設(shè)計(jì) 2. 橫向拆分的設(shè)計(jì)思想及其注意的問(wèn)題 1)按地域拆分的設(shè)計(jì)及其評(píng)價(jià) 2)按用戶(hù)號(hào)進(jìn)行拆分的設(shè)計(jì)及其評(píng)價(jià) 案例:淘寶網(wǎng)的架構(gòu)設(shè)計(jì)解析 3. 在原有系統(tǒng)上如何實(shí)現(xiàn)數(shù)據(jù)庫(kù)分庫(kù) 1)縱向拆分的系統(tǒng)改造過(guò)程 2)橫向拆分的系統(tǒng)改造過(guò)程 |
第十一單元 應(yīng)用緩存的設(shè)計(jì) 應(yīng)用緩存技術(shù) 1. 應(yīng)用緩存技術(shù)解決的問(wèn)題 2. 單機(jī)緩存 vs. 分布式緩存 3. 分布式緩存的特點(diǎn)及其設(shè)計(jì) Memcached技術(shù) 1. Memcached技術(shù)及其特點(diǎn) 2. 分布式哈希算法及其一致性哈希 3. Memcached的部署結(jié)構(gòu)及其應(yīng)用方案 案例:負(fù)載均衡的session同步及其故障轉(zhuǎn)移 如何在原有系統(tǒng)上進(jìn)行應(yīng)用緩存改造 1. Spring + Memcached的設(shè)計(jì)改造過(guò)程 2. Hibernate + Memcached的設(shè)計(jì)改造過(guò)程 3. Memcached的命中率分析及其調(diào)優(yōu) 4. 應(yīng)用緩存的設(shè)計(jì)過(guò)程中應(yīng)當(dāng)注意的問(wèn)題 |
第十二單元 內(nèi)存數(shù)據(jù)庫(kù)的設(shè)計(jì) 內(nèi)存數(shù)據(jù)庫(kù)技術(shù) 1. 內(nèi)存數(shù)據(jù)庫(kù)的概念 2. 解析內(nèi)存數(shù)據(jù)庫(kù)的運(yùn)行原理 3. Oracle TimesTen的介紹 4. Gemfire及其在12306的應(yīng)用 Redis內(nèi)存數(shù)據(jù)庫(kù)技術(shù) 1. Redis的運(yùn)行原理及其特點(diǎn) 2. Redis的部署形式 3. Redis的應(yīng)用設(shè)計(jì) 案例:spring-redis-data的設(shè)計(jì)應(yīng)用 案例:京東訂單系統(tǒng)的優(yōu)化過(guò)程 4. 內(nèi)存數(shù)據(jù)庫(kù)的設(shè)計(jì)局限 |
第十三單元 異步化操作的設(shè)計(jì) 1. 異步化操作的原理 案例:12306的異步化改造過(guò)程 2. 異步化操作的設(shè)計(jì)實(shí)踐 3. 分布式隊(duì)列的設(shè)計(jì) |
第十四單元 互聯(lián)網(wǎng)不斷演進(jìn)的架構(gòu)設(shè)計(jì)過(guò)程 互聯(lián)網(wǎng)+時(shí)代的架構(gòu)設(shè)計(jì)特點(diǎn) 1. 互聯(lián)網(wǎng)+帶來(lái)的巨大變革 2. 互聯(lián)網(wǎng)公司不斷面對(duì)的升級(jí)改造 3. 傳統(tǒng)行業(yè)必須面對(duì)的互聯(lián)網(wǎng)轉(zhuǎn)型 好的架構(gòu)源于不斷的衍變 案例:58同城的架構(gòu)衍變過(guò)程 1. 最初的架構(gòu)設(shè)計(jì) 2. 網(wǎng)絡(luò)接入層的改造過(guò)程 3. 數(shù)據(jù)庫(kù)拆分的改造過(guò)程 4. 服務(wù)化為中心的改造過(guò)程 |
第十五單元 大并發(fā)架構(gòu)設(shè)計(jì)的驗(yàn)證 1. 設(shè)計(jì)測(cè)試用例與場(chǎng)景 2. 錄制測(cè)試腳本執(zhí)行測(cè)試 3. 測(cè)試結(jié)果的評(píng)價(jià)與調(diào)優(yōu) 4. 編寫(xiě)性能測(cè)試報(bào)告 案例:某大型互聯(lián)網(wǎng)開(kāi)票系統(tǒng)的架構(gòu)驗(yàn)證過(guò)程 |
第三部分針對(duì)大數(shù)據(jù)的架構(gòu)設(shè)計(jì) 第十六單元 NoSQL數(shù)據(jù)庫(kù)及其設(shè)計(jì) NoSQL數(shù)據(jù)庫(kù)的概念 1. 分布式架構(gòu)與CAP理論 2. ACID vs. BASE 3. 強(qiáng)一致性與弱一致性 4. NoSQL數(shù)據(jù)庫(kù)的特點(diǎn) MongoDB數(shù)據(jù)庫(kù) 1. MongoDB數(shù)據(jù)庫(kù)簡(jiǎn)介 2. MongoDB數(shù)據(jù)庫(kù)的概念模型 3. 插入、更新、刪除、查詢(xún)操作 案例:MongoDB實(shí)現(xiàn)企業(yè)征信報(bào)告的海量存儲(chǔ)與快速查詢(xún) 4. MongoDB數(shù)據(jù)庫(kù)的優(yōu)劣勢(shì)分析與適用范圍 |
第十七單元 Hadoop大數(shù)據(jù)處理技術(shù) Hadoop大數(shù)據(jù)處理技術(shù) 1. Hadoop簡(jiǎn)介 2. Hadoop生態(tài)圈 3. Hadoop架構(gòu)及其與傳統(tǒng)架構(gòu)的優(yōu)勢(shì) Hadoop的核心組件 1. 解析HDFS分布式文件系統(tǒng)的運(yùn)行原理 2. 解析MapReduce分布式運(yùn)算框架的運(yùn)行原理 3. MapReduce的優(yōu)劣勢(shì)與適用范圍 案例:WordCount詞頻計(jì)算程序的分析設(shè)計(jì)過(guò)程 Hadoop的生態(tài)圈 1. Hive技術(shù) 1)Hive技術(shù)簡(jiǎn)介 2)Hive與傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)的比較 3)Hive的建表、載入數(shù)據(jù)、查詢(xún)數(shù)據(jù)的語(yǔ)句 2. Spark技術(shù) 1)Spark設(shè)計(jì)原理 2)Spark編程實(shí)踐 案例:Spark小步快跑的設(shè)計(jì)過(guò)程 3. Sqoop技術(shù) 1)Sqoop技術(shù)簡(jiǎn)介 2)Sqoop導(dǎo)入語(yǔ)句 3)Sqoop導(dǎo)出語(yǔ)句 4. HBase數(shù)據(jù)庫(kù) 1)HBase數(shù)據(jù)庫(kù)的簡(jiǎn)介 2)HBase數(shù)據(jù)庫(kù)的概念模型 3)HBase的面向列式存儲(chǔ) 4)HBase的系統(tǒng)架構(gòu) 案例:用HBase存儲(chǔ)與展示搜索結(jié)果 5. ElasticSearch搜索引擎 1)ElasticSearch設(shè)計(jì)原理 2)ElasticSearch+Hive的設(shè)計(jì)方案 3)ElasticSearch的RUSTful數(shù)據(jù)搜索 案例:如何實(shí)現(xiàn)海量數(shù)據(jù)秒級(jí)響應(yīng) Hadoop的安裝部署 1. Hadoop的物理部署架構(gòu) 2. Hadoop的技術(shù)選型 3. Hadoop的組件部署結(jié)構(gòu) |
第十八單元 面向主題的數(shù)據(jù)倉(cāng)庫(kù)設(shè)計(jì) 數(shù)據(jù)倉(cāng)庫(kù)的概念 1. 大范圍數(shù)據(jù)統(tǒng)計(jì)的操作特點(diǎn)與設(shè)計(jì)思路 2. 數(shù)據(jù)倉(cāng)庫(kù)的架構(gòu)設(shè)計(jì) 大數(shù)據(jù)環(huán)境下的數(shù)據(jù)倉(cāng)庫(kù)設(shè)計(jì) 1. 大數(shù)據(jù)環(huán)境下數(shù)據(jù)倉(cāng)庫(kù)設(shè)計(jì)面臨的困境 2. 講解海量數(shù)據(jù)的多維數(shù)據(jù)模型設(shè)計(jì)方案 案例:HBase實(shí)現(xiàn)大數(shù)據(jù)多維模型 案例:企業(yè)征信大數(shù)據(jù)的設(shè)計(jì)過(guò)程 3. 淺析數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)過(guò)程 傳統(tǒng)BI系統(tǒng)的大數(shù)據(jù)轉(zhuǎn)型 1. 傳統(tǒng)BI系統(tǒng)面臨的難題 2. 案例講解演化式BI轉(zhuǎn)型過(guò)程 |