前者從科學(xué)的技術(shù)領(lǐng)域出發(fā)來解決軟件創(chuàng)造中的工程技術(shù)問題,后者從人類的管理活動(dòng)出發(fā)發(fā)展了軟件工程的組織管理方式。兩者出發(fā)的領(lǐng)域不同,以及它們的服務(wù)對(duì)象也有所不同。架構(gòu)師對(duì)技術(shù)的要求比程序員的要求要高一些。程序員對(duì)大家熟知的程度更為廣泛。是否有能力實(shí)現(xiàn)軟件架構(gòu)的設(shè)計(jì),是兩者最主要的差距。高手往往不多,因此,不斷學(xué)習(xí)才能有上升的空間。
架構(gòu)(Architecture)一詞源于建筑領(lǐng)域,其本身就是建筑的意思,也是體系結(jié)構(gòu)的意思。維基百科英文版里對(duì) Architecture 的解釋是:規(guī)劃、設(shè)計(jì)和建造建筑物的過程及產(chǎn)物。鑒于軟件工程與建筑工程一樣是一項(xiàng)系統(tǒng)的工程性工作,引入到計(jì)算機(jī)領(lǐng)域后,軟件架構(gòu)就成為了描述軟件規(guī)劃設(shè)計(jì)技術(shù)的專有名詞。特別地,軟件架構(gòu)師一詞在英文里,和建筑師也是同一個(gè)詞(Architect)。
自從軟件工程產(chǎn)生以來,架構(gòu)設(shè)計(jì)和過程管理一直是軟件領(lǐng)域 DNA 的雙螺旋,前者從科學(xué)的技術(shù)領(lǐng)域出發(fā)來解決軟件創(chuàng)造中的工程技術(shù)問題,后者從人類的管理活動(dòng)出發(fā)發(fā)展了軟件工程的組織管理方式。
高并發(fā)(High Concurrency)是互聯(lián)網(wǎng)分布式系統(tǒng)架構(gòu)設(shè)計(jì)中必須考慮的因素之一,它通常是指,通過設(shè)計(jì)保證系統(tǒng)能夠同時(shí)并行處理很多請(qǐng)求。
提高系統(tǒng)并發(fā)能力的方式,方法論上主要有兩種:垂直擴(kuò)展(Scale Up)與水平擴(kuò)展(Scale Out)。前者垂直擴(kuò)展可以通過提升單機(jī)硬件性能,或者提升單機(jī)架構(gòu)性能,來提高并發(fā)性,但單機(jī)性能總是有極限的,互聯(lián)網(wǎng)分布式架構(gòu)設(shè)計(jì)高并發(fā)終極解決方案還是后者:水平擴(kuò)展。
而有能力實(shí)現(xiàn)軟件架構(gòu)的設(shè)計(jì),正是程序員和架構(gòu)師之間最重要的差距。那么在實(shí)際的業(yè)務(wù)項(xiàng)目中,我們?cè)撛趺催x擇合適的分布式架構(gòu)?該怎么處理定位中遇到的問題呢?或許只有從不斷學(xué)習(xí)中才能獲得真知。想要了解更多信息,請(qǐng)繼續(xù)關(guān)注中培偉業(yè)。