80后聊架構(gòu):究竟什么是架構(gòu)設(shè)計? | 架構(gòu)師之路
在架構(gòu)師面試過程中,架構(gòu)設(shè)計是一個必不可少的環(huán)節(jié)。通常面試官會陳述系統(tǒng)的功能需求與性能需求,面試者要提出系統(tǒng)架構(gòu)設(shè)計方案,并與面試官討論方案里的設(shè)計折衷,方案選型與各個方案的優(yōu)缺點。

那究竟什么是架構(gòu)設(shè)計,architecture design 呢?
架構(gòu)設(shè)計通常是指,為了滿足特定的需求,我們定義系統(tǒng)組件,以及組件之間相互作用關(guān)系的過程。
比如說,你要滿足一個個人主頁的需求,系統(tǒng)架構(gòu)只需要一個web-server,背后丟一個靜態(tài)頁就可以了。而如果你要滿足一個十萬人同時登陸的需求,系統(tǒng)架構(gòu)就需要反向代理,web-server,service,DB,cache等諸多組件。
畫外音:任何脫離業(yè)務(wù)需求的架構(gòu)設(shè)計,都是耍流氓。
在軟件工程中,架構(gòu)設(shè)計是軟件開發(fā)過程中的一個階段,這個階段側(cè)重于頂層設(shè)計而不是細節(jié)設(shè)計。通常這個階段需要設(shè)計整體的結(jié)構(gòu),組件,與組件關(guān)系。
總之,架構(gòu)設(shè)計的目的是為了實現(xiàn)產(chǎn)品需求,業(yè)務(wù)需求,架構(gòu)設(shè)計非常關(guān)注:
- 整體結(jié)構(gòu);
 - 組件;
 - 組件之間的關(guān)聯(lián);
 
舉幾個案例。
案例1,業(yè)務(wù)需求:“我想做一個全網(wǎng)搜索引擎,不復(fù)雜,和百度類似就行,兩個月能上線嗎?”

為了實現(xiàn)這個搜索引擎需求,整體的結(jié)構(gòu),組件,組件之間的關(guān)聯(lián),可能就是這樣的。
案例2,業(yè)務(wù)需求:“我想做一個內(nèi)容檢索功能,不復(fù)雜,100億數(shù)據(jù),每秒10萬查詢而已,兩個星期能上線嗎?”

為了實現(xiàn)這個內(nèi)容檢索需求,整體的結(jié)構(gòu),組件,組件之間的關(guān)聯(lián),可能就是這樣的。
案例3,業(yè)務(wù)需求:“檢索的時效性,對用戶體驗來說很重要,在例子2的基礎(chǔ)之上,必須檢索出5分鐘之前的新聞,1秒鐘之前發(fā)布的帖子,不復(fù)雜吧?”

為了實現(xiàn)這個時效性需求,整體的結(jié)構(gòu),組件,組件之間的關(guān)聯(lián),可能就是這樣的。
以上,就是架構(gòu)設(shè)計。















 
 
 








 
 
 
 