閱讀本文大概須要 4.5 分鐘。javascript
什麼是軟件架構模式?
5種主要的軟件架構模式
1.微內核模式(Microkernel Pattern)
插件模塊,提供應用程序功能和自定義處理邏輯的可擴展性,靈活性和隔離性。java
傳統上,微內核架構模式的核心繫統僅包含使系統運行所需的最小功能。程序員
優勢:
極大的靈活性和可擴展性web
一些插件容許在應用程序運行時添加數據庫
良好的便攜性緩存
易於部署服務器
可以快速響應不斷變化的環境微信
插件模塊能夠單獨進行測試。架構
高性能,由於你能夠自定義和簡化應用程序以僅包括所需的那些功能。併發
應用場景
從不一樣來源獲取數據,轉換數據並將其輸出到不一樣地方的應用程序
工做流應用程序
任務類應用程序
2.微服務模式 (Microservices Pattern )
優勢:
能夠分別編寫,維護和部署每一個微服務
易於擴展,由於你能夠僅擴展須要擴展的微服務
更新迭代應用程序的各個部分比較容易,由於它們較小,而且與其餘部分的耦合較少
團隊成員能快速響應且富有成效
高度可維護和可測試–微服務模式知足快速頻繁的開發和部署
可獨立部署–無需與其餘團隊協調便可部署其服務
應用場景:
小型網站
邊界明確的企業數據中心
快速發展的業務
多部門協做的開發團隊
3.分層架構模式( Layered Architecture Pattern)
優勢:
高可測試性,每一層均可以單獨測試。
高度易於開發,由於這種模式衆所周知,而且實現起來並不太複雜,並且大多數公司都經過逐層分離技能來開發應用程序,這種模式已經成爲大多數業務應用程序開發的天然選擇。
可維護
易於單獨更新某一層
應用場景:
標準業務線應用程序,其功能不僅是CRUD操做
須要快速構建的新應用程序
適用於經驗不足的開發團隊
須要嚴格的可維護性和可測試性的應用
4.基於事件的模式(Event-based Pattern)
優勢:
容易適應複雜,常常混亂的環境
彈性伸縮
當出現新的事件類型時,很容易擴展
應用場景:
具備異步數據流的異步系統
用戶界面交互
5.基於空間的架構模式(Space-based Pattern)
優勢:
可以快速響應不斷變化的環境。
儘管基於空間的架構模式一般不是分佈式,但它們是動態的,而且基於雲的複雜工具容許將應用程序輕鬆「推送」到服務器,從而簡化了部署。
經過內存中的數據訪問和此模式中內置的緩存機制可實現高性能。
高可伸縮性來自於對集中式數據庫的依賴很小或根本沒有依賴的事實,所以提升了可伸縮性。
應用場景
數據量大的應用程序,例如用戶日誌
低價值數據,偶爾可能丟失而不會形成嚴重後果
社交類的應用程序
推薦閱讀:
太讚了,居然用SpringBoot打造一款網頁版的IM,進行聊天...
知乎高贊:爲何像王者榮耀這樣的遊戲Server不肯意使用微服務?
微信掃描二維碼,關注個人公衆號
朕已閱
本文分享自微信公衆號 - 程序員的成長之路(cxydczzl)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。