課程簡介
分布式體系架構(gòu)設(shè)計工作坊通過架構(gòu)設(shè)計實戰(zhàn)貫穿整個培訓
目標收益
通過一個完整案例演練貫穿整個架構(gòu)設(shè)計過程,內(nèi)容涉及:
需求與架構(gòu)目標的識別 RAIDs架構(gòu)驅(qū)動方法 技術(shù)選型與決策 CQRS模式 系統(tǒng)一致性 領(lǐng)域驅(qū)動的戰(zhàn)略設(shè)計 六邊形架構(gòu) 微服務架構(gòu)的服務分解 架構(gòu)演進
Clean Architecture思想 技術(shù)雷達
培訓對象
課程大綱
需求 | 搭建一個技術(shù)部落,將與IT、互聯(lián)網(wǎng)、數(shù)字領(lǐng)域相關(guān)的人、部落(業(yè)務、社區(qū)、 興趣組等)和內(nèi)容聯(lián)系起來,提供一個分享與交流的途徑。在最基本的層面上, 它是一個本地的博客、微博、微信文章、開源代碼、活動、講座、工作以及更多 內(nèi)容的聚合器。 |
業(yè)務需求 |
普通用戶可以通過微信、微博等社交賬號登錄 VIP企業(yè)用戶需提供注冊信息,并交納規(guī)定的服務費用 若用戶設(shè)置了相關(guān)賬戶信息,則個人信息上可以顯示微博動態(tài)、Github提 交記錄等 注冊用戶可以創(chuàng)建新的技術(shù)部落 注冊用戶可以申請成為技術(shù)部落會員 技術(shù)部落會員可以在技術(shù)部落中分享內(nèi)容 技術(shù)部落會員可以關(guān)注/收藏自己感興趣的內(nèi)容 技術(shù)部落會員可以組織線上講座,進行網(wǎng)絡直播。網(wǎng)絡直播分為公益直播 與收費直播 網(wǎng)絡直播視頻存儲在系統(tǒng)服務器上,提供回看功能 注冊用戶可以發(fā)布活動事件 注冊用戶可以發(fā)布求職信息 VIP企業(yè)用戶可以發(fā)布招聘信息 注冊用戶可以關(guān)注自己感興趣的活動,關(guān)注后,系統(tǒng)會及時通知活動情況 注冊用戶可以對技術(shù)部落中的文章、活動、直播視頻、工作以及用戶進行 全文本搜索 為部落與用戶制定積分政策,并根據(jù)最近七天的分數(shù)滾動計算出最活躍排 行榜 對整個系統(tǒng)中關(guān)注度高、相關(guān)度的文章進行智能推薦 為VIP企業(yè)用戶提供人才推薦功能 除收費服務外,其余功能皆提供廣告點擊服務 |
質(zhì)量屬性需求 |
系統(tǒng)分為移動APP與Web應用 滿足10萬PV的并發(fā)請求 用戶閱讀分享內(nèi)容的響應時間不超過2s 閱讀的內(nèi)容經(jīng)過系統(tǒng)的格式化 文章推薦服務的準確度達到60%的準確度 人才推薦服務的準確度達到80%的準確度 網(wǎng)絡直播的并發(fā)訪問量能夠支持10萬級別,并保證直播的播放質(zhì)量 全文本搜索的響應時間不超過5s |
第一次演練:架構(gòu)目標與范圍 |
分析需求,明確整個系統(tǒng)的用戶角色,定義系統(tǒng)的宏觀邊界,并找出與之相關(guān)的 第三方系統(tǒng)。 知識點: 架構(gòu)與分布式架構(gòu)的概念 System Context |
第二次演練:RAIDs分析 |
RAIDs分析即識別整個系統(tǒng)的風險(Risk)、假設(shè)(Assumption)、問題 (Issue)與依賴(Dependency)。分析出來這些內(nèi)容將成為架構(gòu)設(shè)計的驅(qū)動 力,作為技術(shù)選型與決策的輸入。 在進行RAIDs分析之后,團隊應就識別出來的風險(問題)優(yōu)先級達成一致意 見,并給出相對具體的架構(gòu)原則;而假設(shè)與依賴則可以視為架構(gòu)設(shè)計的約束。 知識點: RAIDs分析 |
第三次演練:技術(shù)選型 |
結(jié)合著系統(tǒng)需求與RAIDs分析出來的結(jié)果,我們需要針對分布式架構(gòu)的同步消息 調(diào)用、異步消息調(diào)用等諸多方面進行技術(shù)選型。 在進行技術(shù)選型時,應根據(jù)具體的需求場景、質(zhì)量屬性、團隊人員能力等諸多方 面進行考量,并利用Technical Matric的方法進行評估,幫助決策。 實戰(zhàn): 針對RPC框架進行技術(shù)Spike 針對數(shù)據(jù)庫進行技術(shù)Spike |
第四次演練:關(guān)鍵因素分析 |
分離的原則 REST架構(gòu)風格 CQRS架構(gòu)模式 系統(tǒng)的高性能 分布式系統(tǒng)的一致性 |
第五次演練:領(lǐng)域驅(qū)動與微服務 |
領(lǐng)域邏輯的分離應遵循“高內(nèi)聚松耦合”原則,這一分離原則尤其針對于微服務設(shè) 計。在進行服務設(shè)計時,引入領(lǐng)域驅(qū)動設(shè)計(Domain Driven Design)的知 識,通過識別Bounded Context進行微服務設(shè)計。 知識點: Bounded Context Context Map 六邊形架構(gòu) 微服務設(shè)計原則 |
第六次演練:架構(gòu)演進 |
技術(shù)部落的需求發(fā)生了變化,要求增加如下功能: 通過網(wǎng)絡爬蟲挖掘技術(shù)網(wǎng)站文章,根據(jù)部落主題進行文章推薦; 為注冊會員提供博客系統(tǒng),用戶只需要在本地編寫Markdown文件,并進 行同步,即可自動更新博客; 提供對主要招聘網(wǎng)站包括LinkedIn、100Offer等網(wǎng)站的集成,實時更新 招聘信息; 如何在現(xiàn)有架構(gòu)下應對需求變化,并對架構(gòu)進行演進式設(shè)計。 |
工作坊總結(jié) |
Clean Architecture思想 Clean Architecture提出的模型是一個可測試的模型,無需依賴于任何基礎(chǔ) 設(shè)施就可以對它進行測試,只需通過邊界對象發(fā)送和接收對應的數(shù)據(jù)結(jié)構(gòu)即可。 它們都遵循穩(wěn)定依賴原則 ,不對變化或易于變化的事物形成依賴。 |
技術(shù)雷達 | 針對整個分布式系統(tǒng)架構(gòu)設(shè)計,從原則、模式、框架、工具四個角度設(shè)計技術(shù)雷 達。 |
需求 搭建一個技術(shù)部落,將與IT、互聯(lián)網(wǎng)、數(shù)字領(lǐng)域相關(guān)的人、部落(業(yè)務、社區(qū)、 興趣組等)和內(nèi)容聯(lián)系起來,提供一個分享與交流的途徑。在最基本的層面上, 它是一個本地的博客、微博、微信文章、開源代碼、活動、講座、工作以及更多 內(nèi)容的聚合器。 |
業(yè)務需求 普通用戶可以通過微信、微博等社交賬號登錄 VIP企業(yè)用戶需提供注冊信息,并交納規(guī)定的服務費用 若用戶設(shè)置了相關(guān)賬戶信息,則個人信息上可以顯示微博動態(tài)、Github提 交記錄等 注冊用戶可以創(chuàng)建新的技術(shù)部落 注冊用戶可以申請成為技術(shù)部落會員 技術(shù)部落會員可以在技術(shù)部落中分享內(nèi)容 技術(shù)部落會員可以關(guān)注/收藏自己感興趣的內(nèi)容 技術(shù)部落會員可以組織線上講座,進行網(wǎng)絡直播。網(wǎng)絡直播分為公益直播 與收費直播 網(wǎng)絡直播視頻存儲在系統(tǒng)服務器上,提供回看功能 注冊用戶可以發(fā)布活動事件 注冊用戶可以發(fā)布求職信息 VIP企業(yè)用戶可以發(fā)布招聘信息 注冊用戶可以關(guān)注自己感興趣的活動,關(guān)注后,系統(tǒng)會及時通知活動情況 注冊用戶可以對技術(shù)部落中的文章、活動、直播視頻、工作以及用戶進行 全文本搜索 為部落與用戶制定積分政策,并根據(jù)最近七天的分數(shù)滾動計算出最活躍排 行榜 對整個系統(tǒng)中關(guān)注度高、相關(guān)度的文章進行智能推薦 為VIP企業(yè)用戶提供人才推薦功能 除收費服務外,其余功能皆提供廣告點擊服務 |
質(zhì)量屬性需求 系統(tǒng)分為移動APP與Web應用 滿足10萬PV的并發(fā)請求 用戶閱讀分享內(nèi)容的響應時間不超過2s 閱讀的內(nèi)容經(jīng)過系統(tǒng)的格式化 文章推薦服務的準確度達到60%的準確度 人才推薦服務的準確度達到80%的準確度 網(wǎng)絡直播的并發(fā)訪問量能夠支持10萬級別,并保證直播的播放質(zhì)量 全文本搜索的響應時間不超過5s |
第一次演練:架構(gòu)目標與范圍 分析需求,明確整個系統(tǒng)的用戶角色,定義系統(tǒng)的宏觀邊界,并找出與之相關(guān)的 第三方系統(tǒng)。 知識點: 架構(gòu)與分布式架構(gòu)的概念 System Context |
第二次演練:RAIDs分析 RAIDs分析即識別整個系統(tǒng)的風險(Risk)、假設(shè)(Assumption)、問題 (Issue)與依賴(Dependency)。分析出來這些內(nèi)容將成為架構(gòu)設(shè)計的驅(qū)動 力,作為技術(shù)選型與決策的輸入。 在進行RAIDs分析之后,團隊應就識別出來的風險(問題)優(yōu)先級達成一致意 見,并給出相對具體的架構(gòu)原則;而假設(shè)與依賴則可以視為架構(gòu)設(shè)計的約束。 知識點: RAIDs分析 |
第三次演練:技術(shù)選型 結(jié)合著系統(tǒng)需求與RAIDs分析出來的結(jié)果,我們需要針對分布式架構(gòu)的同步消息 調(diào)用、異步消息調(diào)用等諸多方面進行技術(shù)選型。 在進行技術(shù)選型時,應根據(jù)具體的需求場景、質(zhì)量屬性、團隊人員能力等諸多方 面進行考量,并利用Technical Matric的方法進行評估,幫助決策。 實戰(zhàn): 針對RPC框架進行技術(shù)Spike 針對數(shù)據(jù)庫進行技術(shù)Spike |
第四次演練:關(guān)鍵因素分析 分離的原則 REST架構(gòu)風格 CQRS架構(gòu)模式 系統(tǒng)的高性能 分布式系統(tǒng)的一致性 |
第五次演練:領(lǐng)域驅(qū)動與微服務 領(lǐng)域邏輯的分離應遵循“高內(nèi)聚松耦合”原則,這一分離原則尤其針對于微服務設(shè) 計。在進行服務設(shè)計時,引入領(lǐng)域驅(qū)動設(shè)計(Domain Driven Design)的知 識,通過識別Bounded Context進行微服務設(shè)計。 知識點: Bounded Context Context Map 六邊形架構(gòu) 微服務設(shè)計原則 |
第六次演練:架構(gòu)演進 技術(shù)部落的需求發(fā)生了變化,要求增加如下功能: 通過網(wǎng)絡爬蟲挖掘技術(shù)網(wǎng)站文章,根據(jù)部落主題進行文章推薦; 為注冊會員提供博客系統(tǒng),用戶只需要在本地編寫Markdown文件,并進 行同步,即可自動更新博客; 提供對主要招聘網(wǎng)站包括LinkedIn、100Offer等網(wǎng)站的集成,實時更新 招聘信息; 如何在現(xiàn)有架構(gòu)下應對需求變化,并對架構(gòu)進行演進式設(shè)計。 |
工作坊總結(jié) Clean Architecture思想 Clean Architecture提出的模型是一個可測試的模型,無需依賴于任何基礎(chǔ) 設(shè)施就可以對它進行測試,只需通過邊界對象發(fā)送和接收對應的數(shù)據(jù)結(jié)構(gòu)即可。 它們都遵循穩(wěn)定依賴原則 ,不對變化或易于變化的事物形成依賴。 |
技術(shù)雷達 針對整個分布式系統(tǒng)架構(gòu)設(shè)計,從原則、模式、框架、工具四個角度設(shè)計技術(shù)雷 達。 |