微核心架構(Microkernel Architecture)

來源:互聯網
上載者:User

標籤:

微核心架構(Microkernel Architecture)

微核心架構有時也被成為外掛程式架構模式(plug-in architecture pattern),通常用於實現基於產品的應用,如Eclipse和Firefox。然而許多公司也將內部的業務軟體做成軟體產品,提供版本、發版說明和外掛程式特性。微核心架構模式通過外掛程式向核心應用添加額外的功能,提供了可擴充性和功能的獨立和分離。

模式描述

微核心架構包含兩部分組件:核心系統(core system)和外掛程式模組(plug-in modules)。應用邏輯被分割為獨立的外掛程式模組和核心系統,提供了可擴充性、靈活性、功能隔離和自訂處理邏輯的特性。


圖1 微核心架構模式(microkernel architecture pattern)

微核心架構的核心系統通常提供系統運行所需的最小功能集。許多作業系統使用的就是微核心架構,這也是它名字的由來。從商務應用程式的角度來看,核心系統一般是通用商務邏輯,沒有特殊情況、特殊規則或複雜情形下的自訂代碼。

外掛程式模組是獨立的模組,包含特定的處理、額外的功能和自訂代碼,來向核心系統增強或擴充額外的業務能力。通常外掛程式模組之間也是獨立的,也有一些外掛程式是依賴於若干其它外掛程式的。重要的是,盡量減少外掛程式之間的通訊以避免依賴的問題。

核心系統需要知道哪些外掛程式是可用的且如何使用。一種實現的方式是使用外掛程式註冊表。註冊表中包含外掛程式的一些資訊,如名稱、資料契約(輸入資料和輸出資料)、遠端存取協議(決定外掛程式如何與核心系統串連,XML或WSDL等)。

外掛程式模組和核心系統的串連方式有多種,包括OSGi (open service gateway initiative)、messaging、web service、甚至點對點綁定(對象執行個體化)。選擇哪種串連方式取決於構件的應用類型和是否分布式部署等特殊需求。

外掛程式和核心系統之間的契約也是各種各樣的,既可以是標準的也可以是自訂的。通常在使用第三方外掛程式時需要自訂契約。這種情況下,通常建立一個該外掛程式契約到你的標準契約的適配器,這樣核心系統就不需要針對每個外掛程式的定製編碼了。建立標準契約時(通常為XML),要記得從一開始就設計好版本原則。

案例

微核心架構最好的案例也許就是Eclipse啦。下載基礎版本的Ecilpse或許只比一個功能花哨的編輯器強一點,一旦裝上一些外掛程式,它立刻就變成高度定製化的很有用的產品。瀏覽器也是微核心架構產品的典型案例。

這樣的基於產品的軟體例子數不勝數,但是大型商業應用呢?微核心結構也是適用的。這裡再以保險公司的索賠處理為例。(書中的例子都不符合國情,看著挺費勁的。)

索賠處理過程很複雜,每個階段都有很多不同的規則和條例來說明是否應該得到賠償。例如汽車擋風玻璃被岩石擊碎,有的州是允許賠償的,有的是不允許的。標準的索賠過程幾乎有無限的條件。

通常保險索賠應用都會使用一個大型的複雜的規則引擎來處理。但是規則引擎會像滾雪球一樣越來越大,修改一個規則可能會影響其它的規則,或者一個簡單的規則修改需要很多分析人員、開發人員和測試人員。使用微核心架構模式可以避免這樣的問題。

2中所示,核心系統claims processing包含了處理索賠過程的基本商務邏輯。每個外掛程式模組包含一個州的特殊規則。這個例子中,外掛程式模組可以通過自訂代碼或分離規則引擎執行個體來實現。最重要的是,每個州的獨特的規則從核心系統中剝離出來,可以被添加或移除,修改時不影響或會稍微影響核心系統與其它外掛程式。


圖2 微核心架構案例

注意事項

微核心架構模式的一個優秀之處在於它可以嵌入或者作為其它架構模式的一部分。例如事件驅動架構中的事件處理組件就可以使用微核心架構實現。

微核心架構為遞進設計和漸進式開發提供了方便。可以先實現一個穩固的核心系統,然後在不對核心系統進行大量修改的情況下逐漸地增加功能和特性。

對於基於產品的應用,微核心架構是一開始的首選。尤其是這樣的產品:隨著時間逐漸地發布新功能,而且希望保證所有的使用者都能擷取到新功能。如果以後發現該架構不符合需求了,可以隨時重構成其它架構。

模式分析

下表展示了分層架構模式的通用架構特性的評級和分析。

整體靈活性

評級:高

分析:整體靈活性是對環境變化快速響應的能力。由於外掛程式之間的低耦合,改變通常是隔離的,可以快速實現。通常,核心系統是穩定且快速的,具有一定的健壯性,幾乎不需要修改。

易於部署

評級:高

分析:取決於實現方式,外掛程式可以在運行時動態添加(熱部署),最小化部署的停機時間。

可測試性

評級:高

分析:外掛程式可以獨立測試,也很容易被類比,不需修改核心系統就可以示範或構建新特性的原型。

效能

評級:高

分析:雖然微核心架構本身不會使應用高效能,但通常使用微核心架構構建的應用效能都還不錯,因為可以自訂或者裁剪掉不需要的功能。JBoss應用伺服器就是這樣的。

延展性

評級:低

分析:因為大部分微核心架構的實現都是基於產品的,一般都很小,是一個獨立的單元,因此不具有高延展性。取決於外掛程式的實現方式,有時在外掛程式特性層可以提供伸縮性,但總體上來說該架構還是用於構建高延展性應用的。

開發容易度

評級:低

分析:微核心架構需要深思熟慮的設計和契約的規劃管理,因此實現起來比較複雜。契約的版本機制、外掛程式的註冊機制、外掛程式的粒度、外掛程式串連方式的選擇都使得實現起來是複雜的。

參考資料:

Software Architecture Patterns

colobu.com

微核心架構(Microkernel Architecture)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.