|
授課內(nèi)容
|
第一部分 高質(zhì)量架構(gòu)設(shè)計
|
第一單元 軟件架構(gòu)設(shè)計概述
|
情景?。很浖軜?gòu)設(shè)計的價值
1. 一個人的軟件設(shè)計過程
2. 5個人的軟件設(shè)計過程
3. 10個人的軟件設(shè)計過程
4. 20個人以上的軟件設(shè)計過程
結(jié)論:揭示架構(gòu)設(shè)計的價值與架構(gòu)師的作用
架構(gòu)設(shè)計5視圖法:
1. 介紹架構(gòu)設(shè)計5視圖法
2. 運用5視圖法設(shè)計軟件架構(gòu)的過程
|
第二單元 邏輯架構(gòu)設(shè)計過程
|
案例講解邏輯架構(gòu)的設(shè)計過程
1. 邏輯架構(gòu)的概念與作用
2. 需求分析與用例模型設(shè)計
? 由粗到細(xì)的需求分析過程
? 不同類型的用例描述
3. 流程分析與行動圖
4. 領(lǐng)域模型分析
? 講解領(lǐng)域驅(qū)動設(shè)計的思想
? 在需求討論中繪制領(lǐng)域模型
? 用原文分析法進(jìn)行領(lǐng)域分析
5. 需求確認(rèn)與可行性分析
? 探討需求不可行給項目帶來的風(fēng)險
? 案例講解主動式需求分析的過程
|
第三單元 開發(fā)架構(gòu)設(shè)計過程
|
案例講解開發(fā)架構(gòu)的設(shè)計過程
1. 開發(fā)架構(gòu)的概念與作用
2. 討論合理的分層架構(gòu)
案例:演示一個工資系統(tǒng)的需求變更過程
? 展示三次巨大需求變更及其分析設(shè)計過程
? 探討什么樣的架構(gòu)能真正適應(yīng)需求的變更
3. 技術(shù)選型與決策
4. 軟件架構(gòu)設(shè)計
? 案例講解軟件的可擴(kuò)展設(shè)計
? 案例講解軟件的易維護(hù)設(shè)計
5. 模塊劃分與分包
6. 軟件開發(fā)規(guī)范的制訂
|
第四單元 數(shù)據(jù)架構(gòu)設(shè)計過程
|
探討傳統(tǒng)的數(shù)據(jù)架構(gòu)設(shè)計過程
講解基于領(lǐng)域的數(shù)據(jù)架構(gòu)設(shè)計過程
1. 如何將領(lǐng)域模型轉(zhuǎn)換為數(shù)據(jù)庫設(shè)計
? 傳統(tǒng)的4種關(guān)系轉(zhuǎn)換為數(shù)據(jù)庫設(shè)計
? 繼承關(guān)系的3種數(shù)據(jù)庫設(shè)計
2. 如何將領(lǐng)域模型轉(zhuǎn)換為軟件
貧血模型 vs. 充血模型
|
第五單位 運行架構(gòu)設(shè)計過程
|
探討運行架構(gòu)的設(shè)計過程
1. 關(guān)注關(guān)鍵點與難點而不是全局
2. 屬性→場景→決策的分析過程
專題討論運行架構(gòu)需要決策的內(nèi)容
1. 并發(fā)訪問與串行操作
2. 同步操作與異步操作
3. 進(jìn)程與線程
|
第六單元 物理架構(gòu)設(shè)計過程
|
探討物理架構(gòu)設(shè)計過程
1. 案例講解一些常見物理架構(gòu)設(shè)計
2. 案例講解應(yīng)用架構(gòu)設(shè)計
3. 案例講解一些技術(shù)方案的編寫
|
第七單元 逐步演化的架構(gòu)設(shè)計
|
恰如其分的架構(gòu)設(shè)計
1. 恰如其分的架構(gòu)設(shè)計過程
2. 風(fēng)險驅(qū)動的架構(gòu)設(shè)計
逐步演化的架構(gòu)設(shè)計過程
1. 探討老系統(tǒng)維護(hù)過程中架構(gòu)設(shè)計的問題
2. 剖析以往采取的辦法及失敗的原因
? 縫縫補補不能從根本上解決
? 走一步退兩步淺嘗輒止的根源
? 拋棄一切從頭再來的風(fēng)險
3. 剖析問題的根源與解決的辦法
? 演化式改造的過程
? 平臺建設(shè)與重構(gòu)并行
? 改造與維護(hù)并舉
剖析架構(gòu)設(shè)計中的一些常見誤區(qū)
|
第二部分 互聯(lián)網(wǎng)架構(gòu)設(shè)計
|
第八單元 大并發(fā)相關(guān)的指標(biāo)
|
高并發(fā)相關(guān)的指標(biāo)
1. 吞吐量 / 每秒事務(wù)數(shù) / 事務(wù)響應(yīng)時間
2. 用戶數(shù) / 用戶并發(fā)數(shù) / 大用戶并發(fā)數(shù)
高并發(fā)問題的解決思路
1. 目標(biāo)→問題→方案
2. 業(yè)務(wù)梳理與優(yōu)化
|
第九單元 并發(fā)問題的快速優(yōu)化策略
|
傳統(tǒng)架構(gòu)的演變過程
1. All-in-One的架構(gòu)設(shè)計
2. 多級集中的架構(gòu)設(shè)計
3. 傳統(tǒng)架構(gòu)面臨的挑戰(zhàn)
基于風(fēng)險的架構(gòu)設(shè)計思想
1. 先識別未來存在的風(fēng)險,再進(jìn)行有針對的架構(gòu)設(shè)計
2. 用最快的速度解決最急迫的問題
并發(fā)問題的快速優(yōu)化策略
1. 智能DNS及其優(yōu)缺點
2. CDN內(nèi)容分發(fā)網(wǎng)絡(luò)及其優(yōu)缺點
3. 負(fù)載均衡與反向代理
1)Nginx技術(shù)及其解決的問題
2)動靜分離的設(shè)計
3)Zookeeper及其非中心化設(shè)計
|
第十單元 數(shù)據(jù)庫瓶頸及其優(yōu)化策略
|
數(shù)據(jù)庫瓶頸
1. 現(xiàn)有數(shù)據(jù)庫設(shè)計及其性能瓶
2. Shared Disk vs. Shared Nothing
3. 介紹PostgreSQL與GreenPlum
數(shù)據(jù)庫讀寫分離的設(shè)計
1. 三種不同類型的操作及其優(yōu)化策略
業(yè)務(wù)操作 / 隨機(jī)查詢 / 統(tǒng)計分析
2. MySQL主從機(jī)實現(xiàn)讀寫分離
1)MySQL主從機(jī)實現(xiàn)讀寫分離的思想與局限
2)在原有系統(tǒng)上實現(xiàn)讀寫分離的改造過程
3. 真正實現(xiàn)讀寫分離的設(shè)計方案
數(shù)據(jù)庫分庫的設(shè)計思想
1. 縱向拆分的設(shè)計思想及其注意的問題
案例:國家金稅三期的架構(gòu)設(shè)計
案例:阿里巴巴的架構(gòu)設(shè)計
2. 橫向拆分的設(shè)計思想及其注意的問題
1)按地域拆分的設(shè)計及其評價
2)按用戶號進(jìn)行拆分的設(shè)計及其評價
案例:淘寶網(wǎng)的架構(gòu)設(shè)計解析
3. 在原有系統(tǒng)上如何實現(xiàn)數(shù)據(jù)庫分庫
1)縱向拆分的系統(tǒng)改造過程
2)橫向拆分的系統(tǒng)改造過程
|
第十一單元 應(yīng)用緩存的設(shè)計
|
應(yīng)用緩存技術(shù)
1. 應(yīng)用緩存技術(shù)解決的問題
2. 單機(jī)緩存 vs. 分布式緩存
3. 分布式緩存的特點及其設(shè)計
Memcached技術(shù)
1. Memcached技術(shù)及其特點
2. 分布式哈希算法及其一致性哈希
3. Memcached的部署結(jié)構(gòu)及其應(yīng)用方案
案例:負(fù)載均衡的session同步及其故障轉(zhuǎn)移
如何在原有系統(tǒng)上進(jìn)行應(yīng)用緩存改造
1. Spring + Memcached的設(shè)計改造過程
2. Hibernate + Memcached的設(shè)計改造過程
3. Memcached的命中率分析及其調(diào)優(yōu)
4. 應(yīng)用緩存的設(shè)計過程中應(yīng)當(dāng)注意的問題
|
第十二單元 內(nèi)存數(shù)據(jù)庫的設(shè)計
|
內(nèi)存數(shù)據(jù)庫技術(shù)
1. 內(nèi)存數(shù)據(jù)庫的概念
2. 解析內(nèi)存數(shù)據(jù)庫的運行原理
3. Oracle TimesTen的介紹
4. Gemfire及其在12306的應(yīng)用
Redis內(nèi)存數(shù)據(jù)庫技術(shù)
1. Redis的運行原理及其特點
2. Redis的部署形式
3. Redis的應(yīng)用設(shè)計
案例:spring-redis-data的設(shè)計應(yīng)用
案例:京東訂單系統(tǒng)的優(yōu)化過程
4. 內(nèi)存數(shù)據(jù)庫的設(shè)計局限
|
第十三單元 異步化操作的設(shè)計
|
1. 異步化操作的原理
案例:12306的異步化改造過程
2. 異步化操作的設(shè)計實踐
3. 分布式隊列的設(shè)計
|
第十四單元 互聯(lián)網(wǎng)不斷演進(jìn)的架構(gòu)設(shè)計過程
|
互聯(lián)網(wǎng)+時代的架構(gòu)設(shè)計特點
1. 互聯(lián)網(wǎng)+帶來的巨大變革
2. 互聯(lián)網(wǎng)公司不斷面對的升級改造
3. 傳統(tǒng)行業(yè)必須面對的互聯(lián)網(wǎng)轉(zhuǎn)型
好的架構(gòu)源于不斷的衍變
案例:58同城的架構(gòu)衍變過程
1. 最初的架構(gòu)設(shè)計
2. 網(wǎng)絡(luò)接入層的改造過程
3. 數(shù)據(jù)庫拆分的改造過程
4. 服務(wù)化為中心的改造過程
|
第三部分 針對大數(shù)據(jù)的架構(gòu)設(shè)計
|
第十五單元 NoSQL數(shù)據(jù)庫及其設(shè)計
|
NoSQL數(shù)據(jù)庫的概念
1. 分布式架構(gòu)與CAP理論
2. ACID vs. BASE
3. 強(qiáng)一致性與弱一致性
4. NoSQL數(shù)據(jù)庫的特點
MongoDB數(shù)據(jù)庫
1. MongoDB數(shù)據(jù)庫簡介
2. MongoDB數(shù)據(jù)庫的概念模型
3. 插入、更新、刪除、查詢操作
案例:MongoDB實現(xiàn)的海量存儲與快速查詢
4. MongoDB數(shù)據(jù)庫的優(yōu)劣勢分析與適用范圍
|
第十六單元 Hadoop大數(shù)據(jù)處理技術(shù)
|
Hadoop大數(shù)據(jù)處理技術(shù)
1. Hadoop簡介
2. Hadoop生態(tài)圈
3. Hadoop架構(gòu)及其與傳統(tǒng)架構(gòu)的優(yōu)勢
Hadoop的核心組件
1. 解析HDFS分布式文件系統(tǒng)的運行原理
2. &n
|