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