1、可擴展
為了實現(xiàn)一個需求,需要修改系統(tǒng)代碼時,若修改代碼對已存在的功能影響非常小,那么說明原有系統(tǒng)的可擴展性高;若修改代碼對已存在的功能影響非常大,那么說明原有系統(tǒng)的可擴展性低。
設計一個系統(tǒng)時,需要考慮可擴展性,以當下次對系統(tǒng)進行修改時,減小對系統(tǒng)已有功能的影響程度??蓴U展性需要在后續(xù)接到新需求時才能被檢驗。
設計可擴展時用的方法,萬變不離其中,一個字即拆,以此來實現(xiàn)高內(nèi)聚,低耦合。
2、常見可擴展模式
根據(jù)不同的拆分方式,將得到不同的可擴展架構模式。
面向流程拆分:分層架構。
面向服務拆分:SOA和微服務。
面向功能拆分:微內(nèi)核架構。
流程、服務、功能,根據(jù)范圍由大到小依次為流程>服務>功能。
3、分層架構
常見的分層架構有MVC,model層又分為業(yè)務邏輯層、數(shù)據(jù)層等。
使用場景:實現(xiàn)后端API的典型分層架構。
4、SOA
使用場景:對于一些傳統(tǒng)公司而言,公司內(nèi)部有很多個系統(tǒng),并且這些系統(tǒng)很少變動、使用時間比較長,系統(tǒng)開放接口的形式很不一樣。公司為了集成各個系統(tǒng),通過ESB作為中間件負責各個系統(tǒng)的消息轉換。
5、微服務
對于互聯(lián)網(wǎng)系統(tǒng)來說,如果繼續(xù)使用ESB,ESB本身也將成為系統(tǒng)瓶頸?;ヂ?lián)網(wǎng)系統(tǒng)采用去中心化的方式,讓各個服務之間相互調(diào)用,這樣帶來的一個副作用是各個服務之間的開放接口需要統(tǒng)一。
互聯(lián)網(wǎng)業(yè)務的典型特點有:用戶數(shù)量大、業(yè)務發(fā)展迅速。
6、微內(nèi)核架構
一般比較復雜的單機應用可采用微內(nèi)核架構,比如操作系統(tǒng)、Eclipse等。