您当前的位置:首页 > 电脑百科 > 程序开发 > 架构

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

时间:2023-06-20 14:44:34  来源:今日头条  作者:MobotStone

概述:

  • 内核模式也被称为插件架构模式。
  • 将附加应用程序功能作为插件添加到核心应用程序,以提供可扩展性以及功能分离和隔离。 这种模式由两种类型的架构组件组成:一个核心系统和插件模块。
  • 应用程序逻辑分布在独立的插件模块和基础核心系统之间,提供应用程序特性和定制处理逻辑的可扩展性、灵活性和隔离性。
  • 从业务应用的角度看,核心系统通常被定义为没有特殊情况、特殊规则或复杂条件处理的定制代码的通用业务逻辑。
  • 插件模块是独立的、独立的组件,包含专门的处理、额外的特性和定制代码,这些代码旨在增强或扩展核心系统以产生额外的业务能力。保持插件之间的通信最少是非常重要的,以避免依赖性问题。
  • 注册表包含每个插件模块的信息,包括其名称、数据协议和远程访问协议详情(取决于插件如何连接到核心系统)。
  • 插件模块可以通过多种方式连接到核心系统,包括OSGi(开放服务网关倡议)、消息传递、网络服务,甚至直接的点对点绑定(即,对象实例化)。
  • 当插件组件由第三方开发,而你无法控制插件使用的合约时。在这种情况下,通常会创建一个适配器,将插件合约与你的标准合约进行对接,这样核心系统就不需要为每个插件编写专门的代码。

微内核架构

微内核架构模式(有时被称为插件架构模式)是实现基于产品的应用程序的自然模式。基于产品的应用程序是那种打包并以版本形式供下载的典型的第三方产品。然而,许多公司也像软件产品一样开发和发布他们的内部业务应用程序,配有版本、发布说明和可插拔特性。这些也是这种模式的自然适合。微内核架构模式允许你将额外的应用程序特性作为插件添加到核心应用程序,提供可扩展性以及特性的分离和隔离。

模式描述

微内核架构模式由两种类型的架构组件组成:一个核心系统和插件模块。应用程序逻辑分布在独立的插件模块和基础核心系统之间,提供应用程序特性和定制处理逻辑的可扩展性、灵活性和隔离性。图3-1展示了基本的微内核架构模式。

微内核架构模式的核心系统传统上只包含使系统运行所需的最小功能。许多操作系统实现了微内核架构模式,这也是这个模式名字的由来。从业务应用的角度来看,核心系统通常被定义为没有特殊情况、特殊规则或复杂条件处理的定制代码的通用业务逻辑。

插件模块是独立的、独立的组件,包含专门的处理、额外的特性和定制代码,这些代码旨在增强或扩展核心系统以产生额外的业务能力。通常来说,插件模块应该独立于其他插件模块,但你当然可以设计需要其他插件存在的插件。无论如何,保持插件之间的通信最少是非常重要的,以避免依赖性问题。

核心系统需要知道哪些插件模块是可用的,以及如何访问它们。实现这一点的一种常见方法是通过某种插件注册表。这个注册表包含每个插件模块的信息,包括其名称、数据协议和远程访问协议详情(取决于插件如何连接到核心系统)。例如,一个用于标记高风险税务审计项目的税务软件插件可能有一个注册表条目,包含服务的名称(AuditChecker)、数据协议(输入数据和输出数据)和协议格式(XML)。如果通过SOAP访问插件,它也可能包含一个WSDL(Web服务定义语言)。

插件模块可以通过多种方式连接到核心系统,包括OSGi(开放服务网关倡议)、消息传递、网络服务,甚至直接的点对点绑定(即,对象实例化)。你使用的连接类型取决于你正在构建的应用程序类型(小型产品或大型业务应用程序)和你的特定需求(例如,单一部署或分布式部署)。这种架构模式本身并没有指定任何这些实现细节,只要求插件模块必须彼此独立。

插件模块与核心系统之间的合约可以从标准合约到定制合约。定制合约通常出现在插件组件由第三方开发,而你无法控制插件使用的合约的情况中。在这种情况下,通常会创建一个适配器,将插件合约与你的标准合约进行对接,这样核心系统就不需要为每个插件编写专门的代码。在创建标准合约(通常通过XML或JAVA Map实现)时,重要的是要记住从一开始就创建一个版本策略。

模式示例

或许微内核架构最好的例子是Eclipse IDE。下载基本的Eclipse产品只能为你提供一个花哨的编辑器。然而,一旦你开始添加插件,它就会变成一个高度可定制和有用的产品。互联网浏览器是使用微内核架构的另一个常见产品示例:浏览器和其他插件添加了基本浏览器(即,核心系统)中找不到的额外功能。

对于基于产品的软件,例子数不胜数,但大型业务应用程序呢?微内核架构也适用于这些情况。为了说明这一点,让我们使用另一个保险公司的例子,但这次涉及的是保险索赔处理。

索赔处理是一个非常复杂的过程。每个州对保险索赔的允许和不允许都有不同的规则和规定。例如,一些州允许如果你的挡风玻璃被石头破坏,免费更换挡风玻璃,而其他州则不允许。这为标准索赔流程创建了近乎无限的条件集。

不出所料,大多数保险索赔应用程序利用大型和复杂的规则引擎来处理这种复杂性。然而,这些规则引擎可以演变成一个复杂的大泥球,改变一个规则会影响其他规则,或者进行简单的规则更改需要大量的分析师、开发人员和测试人员。使用微内核架构模式可以解决这些问题。

你在下图看到的文件夹堆表示的是索赔处理的核心系统。它包含保险公司处理索赔所需的基本业务逻辑,只是没有任何定制处理。每个插件模块包含该州的特定规则。在这个例子中,插件模块可以使用定制的源代码或单独的规则引擎实例来实现。无论实现方式如何,关键点是,特定州的规则和处理与核心索赔系统是分开的,可以被添加、移除和更改,对核心系统或其他插件模块的其余部分影响微乎其微。

结论

以下是微内核架构模式的优点和缺点。

优点:

  1. 它可以在最小化改变核心系统的同时,对插件模块的改变做出反应。
  2. 不像分层架构,有插件模块意味着部署更容易,从而最小化停机时间。
  3. 测试也更容易,因为可以单独测试每个模块。
  4. 尽管一般来说并不是用于高性能应用的理想模式,但是由于只包含所需的功能来定制应用,它可以表现得很好。

缺点:

  1. 应用程序倾向于较小的规模,因此并不具有很高的可扩展性。
  2. 需要在实现之前进行彻底的设计分析。需要分析的项目包括合约版本控制、内部插件注册表、插件粒度,以及插件连接的多样选择。


Tags:微内核   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
我们聊聊DDD、SOA、微服务和微内核
DDD、SOA、微服务和微内核,看到经常有人把这几个概念拿出来一起讲。事实上,DDD和其他三个不是一个维度的东西。DDD其实特别好理解,DDD就是领域来驱动设计嘛,是一种设计思想。很...【详细内容】
2023-12-08  Search: 微内核  点击:(232)  评论:(0)  加入收藏
Kubernetes 微内核的分布式操作系统
如今,Kubernetes 已经成为分布式集群管理系统和公有云/私有云的事实标准。实际上,Kubernetes 是一个分布式操作系统,它是 Google 在分布式操作系统领域十余年工程经验和智慧的...【详细内容】
2023-08-21  Search: 微内核  点击:(153)  评论:(0)  加入收藏
聊聊【软件架构模式】—微内核架构
概述: 内核模式也被称为插件架构模式。 将附加应用程序功能作为插件添加到核心应用程序,以提供可扩展性以及功能分离和隔离。 这种模式由两种类型的架构组件组成:一个核心系统...【详细内容】
2023-06-20  Search: 微内核  点击:(292)  评论:(0)  加入收藏
微内核插件架构从原理到实践
前言最近一段时间一直在参与一些SaaS产品的设计,发现SaaS主产品有90%的功能基本都是通用性,其中10%各个租户都会出现定制化,比如一些页面表单字段的差异化、业务规则差异化以及...【详细内容】
2022-09-02  Search: 微内核  点击:(607)  评论:(0)  加入收藏
HarmonyOS 微内核
鸿蒙开始于 2012 年,虽一开始定位于物联网方向,但到如今,已经发展为一款可兼容 Android 应用的跨平台操作系统. 最新的 2.0 的官方描述是: HarmonyOS 是新一代的智能终端操...【详细内容】
2021-06-18  Search: 微内核  点击:(988)  评论:(0)  加入收藏
什么是微内核架构设计?
简介: 作为一名Java程序员,相信同学们都听说过微内核架构设计,也有自己的理解。那么微内核是如何被提出来的?微内核在操作系统内核的设计中又有什么作用?本文从插件化(Plug-in)架...【详细内容】
2021-02-24  Search: 微内核  点击:(372)  评论:(0)  加入收藏
鸿蒙操作系统用的微内核到底是什么?
作者 | RT-Thread责编 | 伍杏玲【CSDN 编者按】安卓系统是宏内核,而最近热议的华为鸿蒙操作系统是微内核。什么是微内核?微内核是如何发展?其优缺点是什么呢?一起来看看吧。 背...【详细内容】
2019-06-28  Search: 微内核  点击:(927)  评论:(0)  加入收藏
▌简易百科推荐
对于微服务架构监控应该遵守的原则
随着软件交付方式的变革,微服务架构的兴起使得软件开发变得更加快速和灵活。在这种情况下,监控系统成为了微服务控制系统的核心组成部分。随着软件的复杂性不断增加,了解系统的...【详细内容】
2024-04-03  步步运维步步坑    Tags:架构   点击:(5)  评论:(0)  加入收藏
大模型应用的 10 种架构模式
作者 | 曹洪伟在塑造新领域的过程中,我们往往依赖于一些经过实践验证的策略、方法和模式。这种观念对于软件工程领域的专业人士来说,已经司空见惯,设计模式已成为程序员们的重...【详细内容】
2024-03-27    InfoQ  Tags:架构模式   点击:(13)  评论:(0)  加入收藏
哈啰云原生架构落地实践
一、弹性伸缩技术实践1.全网容器化后一线研发的使用问题全网容器化后一线研发会面临一系列使用问题,包括时机、容量、效率和成本问题,弹性伸缩是云原生容器化后的必然技术选择...【详细内容】
2024-03-27  哈啰技术  微信公众号  Tags:架构   点击:(10)  评论:(0)  加入收藏
DDD 与 CQRS 才是黄金组合
在日常工作中,你是否也遇到过下面几种情况: 使用一个已有接口进行业务开发,上线后出现严重的性能问题,被老板当众质疑:“你为什么不使用缓存接口,这个接口全部走数据库,这怎么能扛...【详细内容】
2024-03-27  dbaplus社群    Tags:DDD   点击:(12)  评论:(0)  加入收藏
高并发架构设计(三大利器:缓存、限流和降级)
软件系统有三个追求:高性能、高并发、高可用,俗称三高。本篇讨论高并发,从高并发是什么到高并发应对的策略、缓存、限流、降级等。引言1.高并发背景互联网行业迅速发展,用户量剧...【详细内容】
2024-03-13    阿里云开发者  Tags:高并发   点击:(6)  评论:(0)  加入收藏
如何判断架构设计的优劣?
架构设计的基本准则是非常重要的,它们指导着我们如何构建可靠、可维护、可测试的系统。下面是这些准则的转换表达方式:简单即美(KISS):KISS原则的核心思想是保持简单。在设计系统...【详细内容】
2024-02-20  二进制跳动  微信公众号  Tags:架构设计   点击:(36)  评论:(0)  加入收藏
详解基于SpringBoot的WebSocket应用开发
在现代Web应用中,实时交互和数据推送的需求日益增长。WebSocket协议作为一种全双工通信协议,允许服务端与客户端之间建立持久性的连接,实现实时、双向的数据传输,极大地提升了用...【详细内容】
2024-01-30  ijunfu  今日头条  Tags:SpringBoot   点击:(15)  评论:(0)  加入收藏
PHP+Go 开发仿简书,实战高并发高可用微服务架构
来百度APP畅享高清图片//下栽のke:chaoxingit.com/2105/PHP和Go语言结合,可以开发出高效且稳定的仿简书应用。在实现高并发和高可用微服务架构时,我们可以采用一些关键技术。首...【详细内容】
2024-01-14  547蓝色星球    Tags:架构   点击:(115)  评论:(0)  加入收藏
GraalVM与Spring Boot 3.0:加速应用性能的完美融合
在2023年,SpringBoot3.0的发布标志着Spring框架对GraalVM的全面支持,这一支持是对Spring技术栈的重要补充。GraalVM是一个高性能的多语言虚拟机,它提供了Ahead-of-Time(AOT)编...【详细内容】
2024-01-11    王建立  Tags:Spring Boot   点击:(124)  评论:(0)  加入收藏
Spring Boot虚拟线程的性能还不如Webflux?
早上看到一篇关于Spring Boot虚拟线程和Webflux性能对比的文章,觉得还不错。内容较长,抓重点给大家介绍一下这篇文章的核心内容,方便大家快速阅读。测试场景作者采用了一个尽可...【详细内容】
2024-01-10  互联网架构小马哥    Tags:Spring Boot   点击:(115)  评论:(0)  加入收藏
站内最新
站内热门
站内头条