來源:北大青鳥總部 2023年08月29日 11:42
內卷化指的是社會或文化模式在某一發展階段達到一種確定的形式之后,便停滯不前或無法轉化為另一種高級模式的現象,簡單來說,就是“不進步便是退步”。所以作為一名互聯網程序員,只聚焦業務邏輯開發、CRUD是遠遠不夠的,架構、性能優化、新技術這些都是必須要掌握的,只有不斷努力的打磨技術,緊跟技術發展趨勢,以當下最優的方式解決業務訴求,保障高可用、高性能、高并發,才能避免內卷化,立于不敗之地。今天我們所介紹的便是軟件架構設計模式~
那么什么是軟件架構設計模式呢?它指的是軟件開發人員在開發過程中所面臨的一般問題的解決方案,是一套被反復使用的、多數人知曉的、經過分類的、代碼設計經驗的總結。通過設計模式的使用,保障所有開發人員的認知是在同一水平,實現代碼重用,并且所寫的代碼可靠性更高、也更容易被他人理解。常見的設計模式包含客戶端-服務器模式、分層模式、代理模式、主從模式、管道-過濾器模式、MVC模式。
· 客戶端-服務器模式
現在最互聯網通用的場景便是用戶通過客戶端進行應用程序訪問、服務端響應請求、返回數據。在客戶端-服務器模式中,主要是多個客戶端向同一個服務端進行數據的請求,并且服務端持續監聽來自客戶端的情況。現在的設備終端非常多,往上有電腦、手機、iPad、智能硬件,往下有API接口調用,因此這些都是在軟件設計過程中必須要考慮的點。
· 分層模式
現在的軟件系統都是非常復雜的,比如我們平時最常用的淘寶app、美團app、滴滴app,它并不是一個簡單的app,背后承載著上千個系統。如果不對該系統進行分層的話,那么對于系統的迭代更新、維護都是非常困難的。分層模式的思想就是把系統拆分成多層,每一層獨自開發、演化,每個小團隊關注自己的這一層就好,整個業務程序運行則按層層調用即可。
典型的分層模式設計實踐便是微服務了。微服務通過把整個系統所能提供的服務都拆分成原子化,微服務與微服務之間低耦合,微服務內部高內聚。通過服務拆分微服務,實現了復雜系統簡單化,提高軟件團隊開發效率。
· 代理模式
這種模式主要是在分布式系統中最常見,分布式系統是把軟件或軟件模塊部署在不同的地區、服務器上,集合一群計算機的能力對外提供高可靠、高性能的服務,解決了傳統集中式系統的單點問題。代理模式便是提供一個代理,讓所有的請求、消息都發送到代理,服務端也從代理層獲取數據進行處理。常見的最佳實踐有軟件部署模式中的Nginx分層設計、消息隊列的設計、服務注冊中的注冊中心等。
· 主從模式
在微服務架構、分布式系統中,承載著上千萬、上億萬的服務請求,除了業務層需要高可用之外,在數據層也是需要的。主從模式的設計思想是把整個數據系統分為master-slave,master節點是寫操作、處理用戶數據,slave節點是讀操作、從master節點同步數據、業務從slave節點讀取數據。常見的最佳實踐便是數據庫的主從復制方案了。
· 管道-過濾器模式
在大數據領域最常見的設計模式便是管道-過濾器模式了。整個數據分析處理任務在一個管道內完成,數據在管道中流通,而每一個處理步驟,比如數據采集、數據清晰、詞義轉化、語義轉化等就是一個個的過濾器,把數據從上一階段轉到下一階段。我們熟悉的MapReduce模型,也是這種設計,從源HDFS文件系統中獲取數據,經過Filter1的Map操作處理成中間結果,再經過Fliter2的Reduce操作處理成分析結果,最后呈現給到用戶。
· MVC模式
MVC即Model-View-Controller,在模型中包含核心模塊、核心功能設計,通過視圖將信息呈現給到用戶,再通過控制器處理輸入輸出數據。該模式將信息的內部表示和呈現方式分離出來,保障了代碼的有效復用。在Java程序設計中還會細分為Service、Controller、DAO層。
這是一個最好的時代,也是一個最壞的時代。社會的快速發展帶來了人類文明的進步、更方便便捷的生活方式,但同時使得打工人們生活變得繁忙、焦慮、壓力大。當面對工作和生活中的內卷化時,我們不應該自怨自艾,而應該思考如何才能快速成長起來,提升自己的能力,避免內卷化。