聊聊【软件架构模式】—微内核架构( 二 )


模式示例或许微内核架构最好的例子是Eclipse IDE 。下载基本的Eclipse产品只能为你提供一个花哨的编辑器 。然而,一旦你开始添加插件,它就会变成一个高度可定制和有用的产品 。互联网浏览器是使用微内核架构的另一个常见产品示例:浏览器和其他插件添加了基本浏览器(即,核心系统)中找不到的额外功能 。
对于基于产品的软件,例子数不胜数,但大型业务应用程序呢?微内核架构也适用于这些情况 。为了说明这一点,让我们使用另一个保险公司的例子,但这次涉及的是保险索赔处理 。
索赔处理是一个非常复杂的过程 。每个州对保险索赔的允许和不允许都有不同的规则和规定 。例如,一些州允许如果你的挡风玻璃被石头破坏,免费更换挡风玻璃,而其他州则不允许 。这为标准索赔流程创建了近乎无限的条件集 。
不出所料,大多数保险索赔应用程序利用大型和复杂的规则引擎来处理这种复杂性 。然而,这些规则引擎可以演变成一个复杂的大泥球,改变一个规则会影响其他规则,或者进行简单的规则更改需要大量的分析师、开发人员和测试人员 。使用微内核架构模式可以解决这些问题 。
你在下图看到的文件夹堆表示的是索赔处理的核心系统 。它包含保险公司处理索赔所需的基本业务逻辑,只是没有任何定制处理 。每个插件模块包含该州的特定规则 。在这个例子中,插件模块可以使用定制的源代码或单独的规则引擎实例来实现 。无论实现方式如何,关键点是,特定州的规则和处理与核心索赔系统是分开的,可以被添加、移除和更改,对核心系统或其他插件模块的其余部分影响微乎其微 。

聊聊【软件架构模式】—微内核架构

文章插图
结论以下是微内核架构模式的优点和缺点 。
优点:
  1. 它可以在最小化改变核心系统的同时,对插件模块的改变做出反应 。
  2. 不像分层架构,有插件模块意味着部署更容易,从而最小化停机时间 。
  3. 测试也更容易,因为可以单独测试每个模块 。
  4. 尽管一般来说并不是用于高性能应用的理想模式,但是由于只包含所需的功能来定制应用,它可以表现得很好 。
缺点:
  1. 应用程序倾向于较小的规模,因此并不具有很高的可扩展性 。
  2. 需要在实现之前进行彻底的设计分析 。需要分析的项目包括合约版本控制、内部插件注册表、插件粒度,以及插件连接的多样选择 。

【聊聊【软件架构模式】—微内核架构】


推荐阅读