高併發學習筆記--架構分層

高併發學習筆記系列

高併發學習筆記--通用設計方法

高併發學習筆記--架構分層


 

 

什麼是分層架構?

軟件架構分層在軟件工程中是一種常見的設計方式,它是將整體系統拆分成 N 個層次,每個層次有獨立的職責,多個層次協同提供完整的功能。

我們在剛剛成爲程序員的時候,會被“教育”說系統的設計要是“MVC”(Model-View-Controller)架構。它將整體的系統分成了 Model(模型),View(視圖)和 Controller(控制器)三個層次,也就是將用戶視圖和業務處理隔離開,並且通過控制器連接起來,很好地實現了表現和邏輯的解耦,是一種標準的軟件分層架構。

另外一種常見的分層方式是將整體架構分爲表現層、邏輯層和數據訪問層:

  • 表現層,顧名思義嘛,就是展示數據結果和接受用戶指令的,是最靠近用戶的一層;
  • 邏輯層裏面有複雜業務的具體實現;
  • 數據訪問層則是主要處理和存儲之間的交互。

這是在架構上最簡單的一種分層方式。其實,我們在不經意間已經按照三層架構來做系統分層設計了,比如在構建項目的時候,我們通常會建立三個目錄:Web、Service 和 Dao,它們分別對應了表現層、邏輯層還有數據訪問層。

架構分層的好處

隨着業務越來越複雜,大量的代碼糾纏在一起,會出現邏輯不清晰、各模塊相互依賴、代碼擴展性差、改動一處就牽一髮而動全身等問題。

分層的設計可以簡化系統設計,讓不同的人專注做某一層次的事情。

一般的項目分工是比較明確的,前端工程師負責前端頁面的搭建,後端工程師負責業務邏輯的代碼編寫。運維及DBA提供數據庫方面支持。如果項目部分層的話,前端邏輯、後臺邏輯、數據庫操作都在一層甚至一個文件內。那樣勢必會造成各種代碼衝突和混亂不堪。

分層之後可以提高複用

比如,我們有多個不同的地方使用到了同樣的邏輯或者數據,雖然View是分開的,但是他們可以調用同一個Service中的邏輯代碼。這樣一來即使再多頁面引用,只要業務邏輯相同,就不必重複操作。

分層架構可以讓系統更容易橫向擴展

如果系統沒有分層,當流量增加時我們需要針對整體系統來做擴展。但是,如果我們按照上面提到的三層架構將系統分層後,那麼我們就可以針對具體的問題來做細緻的擴展。

比如說,業務邏輯裏面包含有比較複雜的計算,導致 CPU 成爲性能的瓶頸,那這樣就可以把邏輯層單獨抽取出來獨立部署,然後只對邏輯層來做擴展,這相比於針對整體系統擴展所付出的代價就要小的多了。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章