架構師(2021年8月)

卷首語

作者|楊敏

在日常開發中,經常聽到大家說一句話:“任何需求都可以通過增加一個間接的中間層來解決。”

分層設計是什麼?將軟件劃分成若干層,每一層只解決一部分問題,通過所有層的協作來完成整體的目標。一個複雜的問題通過分解成一系統子問題,這樣就有效降低了每個子問題的規模與複雜度。

分層設計帶來的好處主要有亮點:一是降低了系統軟件的複雜度,將一個複雜問題通過分解,分而治之;二是功能的複用和封裝。

比如計算機語言的發展,它就是不斷地抽象,只有通過抽象,將一個複雜的的系統變成一層層的接口集合,讓我們每次只需要考慮關注當前層集合內的邏輯,而不用去考慮當前層次以上或者以下的複雜度,纔有可能讓我們從複雜系統中解放出來,逐步理解以及構造一個複雜系統。

比如Linux中的內核硬件層設計、MMU、CPU與IO外設通信設計處處體現了分層/中間層的設計思想。其中,MMU抽象層是我認爲最經典、最本質、最受啓發的中間抽象層的設計。通過在CPU與內存之間加入MMU抽象層,讓CPU在運行指令時發出的VA虛擬地址通過MMU轉換後變成PA物理地址,然後再去訪問物理內存。

再比如TCP/IP網絡協議堆棧,從最底層的物理鏈路層層層向上封裝抽象,解決了複雜的網絡通信的問題。還有Netty框架發展以及分層私有協議棧分析,微服務分層,應用框架Rails on Rack等等,這些案例都能夠充分說明計算機系統本身就是通過一層一層抽象構造出來的。

硬件方面是從一個個小的晶體管,抽象成一個個門電路,再到CPU器件,最後抽象組成計算機。軟件設計也是由一個層次一個層次的功能完善疊加的,無論是自頂向下還是自底向上。同樣地,任何複雜的問題,通過分層最終總能夠迴歸最本質。

延展閱讀:關於軟件分層設計的思考

目錄

熱點 | Hot
B 站崩了:事情不大,影響不小
CentOS 8 退役倒計時,開發者們又吵起來了

觀點|Opinion
Kubernetes 7 週年:它爲什麼如此受歡迎?
PHP 沒你想的那麼差

推薦文章 | Article
從服務框架到服務網格,網易輕舟雙引擎多模式服務治理演進實踐
唯品會億級數據服務平臺落地實踐

專題|Topic
透過數字化轉型再談數據中臺(四):數據中臺不是買來的,是幹出來的

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