久久青草精品A片狠狠,日韩欧美视频一区二区,亚洲国码AV日韩,国产精品黄在

軟件架構模式

2020-09-04 16:51:46 3352

軟件架構模式

自從做了一些平臺化系統之后,發現最原始的抽象,建模,分層,內聚,低耦合,面向對象變得越來越重要了,有的時候技術就是這樣,那些最本質,最樸實的東西,有種返璞歸真的感覺,當然其他很多事情也一樣,因為不管是技術,架構還是其他事情,我們都是要去提出問題并解決問題的,而將問題劃分成小的問題去解決是最重要的方法論。

說到軟件架構模式,什么是軟件架構模式呢?

軟件架構模式指的是那些被驗證了的,經歷過復雜性洗禮的,具有良好的設計結構的系統。也就是在實踐過程中歸納總結出的一套設計決策,具有明確的定義和屬性,可以重復使用,提高效率,降低復雜度和心智負擔。

 

那么市面上有哪些值得實踐的軟件模式呢?

1、微內核模式

2、微服務模式

3、分層架構模式

4、事件驅動模式

5、空間架構模式

 

微內核模式

微內核也稱為插件模式,允許業務方可以將其他應用程序邏輯以插件方式,添加到核心應用邏輯中,從而實現了可擴展性,做到了核心邏輯和業務邏輯的功能分離。

 

這也是我們做平臺化系統中首先想到的一點,平臺沉淀那些通用的邏輯,流程,規則。個性化的業務邏輯以插件方式集成到平臺上,個性化邏輯在插件內自組織,自流轉,實現了平臺和業務的隔離。

 

微內核模式包含兩部分:核心系統和插件模塊。

1、 核心系統:提供程序功能和自定義處理邏輯的擴展能力,具有靈活性,擴展性和隔離性

2、一般微內核模式的核心系統只包含系統運行所需的最小功能

 

微內核最佳的示例是來源于Eclipse IDE,我們系統變成微內核架構需要具備以下的一些特點:

 1、靈活性和擴展性

2、運行插件可以在運行時加載和卸載

3、操作便捷

4、易于部署

5、插件可以獨立進行測試

6、高性能,簡化應用程序所需功能

 

 

微服務模式

 

隨著微服務的流程,我們會將原有的一體架構拆成微服務架構,一組微服務實現某一個邏輯上的業務能力。微服務自身具有獨立的功能職責,團隊可以就具體的微服務進行開發測試,微服務之間通過通信完成信息交互。

 

我們在平臺化架構中,還是將具體的功能方向的服務進行進一步抽象,變成獨立的微服務,多個微服務在邏輯上組成了平臺的某個業務能力。

相信大家對于微服務都比較熟悉了,就不再贅述了,微服務的優點如下:

1、可以獨立編寫,維護和部署

2、易于擴展,業務迭代只需修改對應的微服務

3、因為微服務相對隔離,不會影響其他業務,實現解耦

4、團隊響應迅速

5、可獨立測試,部署,迭代效率高

 

分層架構

 

軟件架構被水平的分成多層,每層具有獨立的職責。大多數架構常用的架構模式就是分層了,從最開始接觸的三層架構,到后期的MVC,MVP架構,都透漏著分層的影子。

 

分層架構要求每一層具有特定的角色和職責,比如負責顯示的顯示層可以處理用戶交互邏輯。業務邏輯層主要負責請求邏輯和數據之間的組合和處理規則。

 

分層架構要求每一層處理該層相關的邏輯,我們在平臺化系統中的分層更加抽象,不再是以具體的業務進行劃分,而是按照抽象的能力劃分成多個層了。

 

分層架構的優點:

1、可測試性,每層可獨立測試

2、易于開發,由于功能相對隔離,開發比較簡單,但是需要防止同一層之間的能力過于分散,可以引入領域的方式進行二次隔離

3、每次功能點可以修改獨立的一層即可完成

 

 

事件驅動模式

 

這是一種高擴展的解決方案,架構中通過監聽并異步處理事件方式組成一系列組件。事件驅動模式構建了一個接收所有數據的中央處理單元,之后將事件委托給特定事件類型的模塊單獨處理。

 

事件驅動多用于平臺架構中非業務相關的功能,通過事件監聽與處理實現了進一步解耦,多用于數據流驅動或是用戶界面交互。

 

事件驅動的優點是:

1、 可以通過事件解耦,適應混亂環境

2、具有彈性能力

3、當出現新的事件時,容易擴展

 

 

空間架構模式

 

空間架構模式多用于解決軟件系統的伸縮性和并發性問題。對于用戶量經常發生變化,偶爾出現并發的系統,可以采用這種架構。通過消除對于數據庫的依賴,使用復制基于內存的數據實現伸縮性。

空間架構模式主要是希望通過多個服務器之間拆分處理和存儲數據,避免高負載下軟件系統的崩潰。

 

優點:

 1、可以快速適應變化

2、通過內存中數據訪問內置的緩存,實現了高性能

3、高伸縮性來源于降低了對集中數據庫的依賴,或是沒有依賴,提高了伸縮性

4、空間架構可以看作是一種圍繞于數據源的異構,無狀態的處理方式。

以上幾種架構可以按需使用到系統之中,以解決不同的問題。

 


提交成功!非常感謝您的反饋,我們會繼續努力做到更好!

這條文檔是否有幫助解決問題?

非常抱歉未能幫助到您。為了給您提供更好的服務,我們很需要您進一步的反饋信息:

在文檔使用中是否遇到以下問題: