【課程簡介】
本課程培訓(xùn)周期為3天
隨著網(wǎng)絡(luò)與信息技術(shù)的高速發(fā)展,軟件研發(fā)逐漸朝著大規(guī)模、高復(fù)雜度的大型軟件系統(tǒng)發(fā)展。特別是隨著近幾年互聯(lián)網(wǎng)的高速發(fā)展,帶動著全行業(yè)的互聯(lián)網(wǎng)轉(zhuǎn)型,使得未來的軟件系統(tǒng)還將向著持續(xù)性、深層次架構(gòu)調(diào)整的方向發(fā)展。在這樣的背景下,如何從全局的角度思考軟件系統(tǒng)方方面面的問題,提前識別軟件項目的技術(shù)風(fēng)險點,并有針對性地制訂技術(shù)方案,以及如何構(gòu)建一個更加靈活、易于調(diào)整、快速變化的軟件系統(tǒng),成為大型軟件系統(tǒng)至關(guān)重要的設(shè)計內(nèi)容。
本課程首先將系統(tǒng)地講述高質(zhì)量的軟件架構(gòu)該設(shè)計過程,包括如何運用領(lǐng)域驅(qū)動設(shè)計的思想貫穿整個架構(gòu)設(shè)計,又如何使軟件系統(tǒng)在衍變中調(diào)整架構(gòu),從而適應(yīng)需求的變化;如何運用5視圖的方法,全面地思考軟件架構(gòu)各方面的問題:從需求的角度進(jìn)行可行性分析;從全局的角度進(jìn)行軟件分層、技術(shù)選型、模塊劃分等方面的設(shè)計;運用數(shù)據(jù)持久化的方式設(shè)計數(shù)據(jù)結(jié)構(gòu);運用“屬性->場景->決策”的過程把握非功能設(shè)計;從部署、網(wǎng)絡(luò)、性能的角度進(jìn)行物理架構(gòu)的設(shè)計,從而有效避免架構(gòu)設(shè)計時遺漏關(guān)鍵風(fēng)險點,使架構(gòu)設(shè)計過程變得有序。
接著,本課程從高并發(fā)、大數(shù)據(jù)、高可靠3個方面入手,講解了大型互聯(lián)網(wǎng)應(yīng)用系統(tǒng)是如何從容應(yīng)對數(shù)以億計的用戶并發(fā)訪問、海量業(yè)務(wù)數(shù)據(jù)的性能壓力,如何設(shè)計高效而穩(wěn)定的軟件架構(gòu)。課程由淺入深、層層推進(jìn)、從各個層面逐步介紹了,在不同用戶壓力環(huán)境下,架構(gòu)設(shè)計各個環(huán)節(jié)可能遇到的性能問題,可以采用的技術(shù),這些技術(shù)的基本原理與解決思路,以及相關(guān)互聯(lián)網(wǎng)應(yīng)用的具體案例。通過這些案例的講解,可以為學(xué)員日后的架構(gòu)設(shè)計開闊思路、加深認(rèn)識。
此外,在面對海量數(shù)據(jù)方面,本課程還介紹了NoSQL數(shù)據(jù)庫、Hadoop大數(shù)據(jù)處理技術(shù),以及它們在應(yīng)對海量數(shù)據(jù)存儲、深度數(shù)據(jù)挖掘與高效數(shù)據(jù)查詢方面,所做的設(shè)計。通過案例講解,可以讓學(xué)員理解如何運用NoSQL數(shù)據(jù)庫與Hadoop大數(shù)據(jù)處理技術(shù)解決相關(guān)問題、設(shè)計真實的系統(tǒng)。
【培訓(xùn)特色】
本課程注重實戰(zhàn),采用案例貫穿的方式,收集了大量的真實案例,針對項目過程中技術(shù)人員常犯的錯誤進(jìn)行了匯總與研討,并最終形成培訓(xùn)教程。通過大量的真實案例,詳細(xì)地介紹了軟件架構(gòu)設(shè)計過程需要注意的要點以及難點,這些知識都是講師十幾年經(jīng)驗的總結(jié)。
【培訓(xùn)對象】
中高級工程師、企業(yè)架構(gòu)師、軟件設(shè)計師、數(shù)據(jù)庫/存儲技術(shù)人員、技術(shù)決策/解決方案人員等。
【培訓(xùn)時長】
3天
【課程大綱】
|
授課內(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ù)載均衡與反向代理
|
第十單元 數(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)化策略
2. MySQL主從機(jī)實現(xiàn)讀寫分離 3. 真正實現(xiàn)讀寫分離的設(shè)計方案
數(shù)據(jù)庫分庫的設(shè)計思想
1. 縱向拆分的設(shè)計思想及其注意的問題
2. 橫向拆分的設(shè)計思想及其注意的問題
3. 在原有系統(tǒng)上如何實現(xiàn)數(shù)據(jù)庫分庫
|
第十一單元 應(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)用方案
如何在原有系統(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è)計 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 |