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