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