推广 热搜: page  数据  小红  红书  考试  论文  数据分析  关键词  哪些  搜索 

架构设计读后有感——微内核架构

   日期:2024-12-30     移动:https://sicmodule.kub2b.com/mobile/quote/16926.html

Microkernel Architecture,翻译为微内核架构也被称为插件化架构,是一种面向功能进行拆分的可扩展架构,通常实现基于产品的应用,例如IDEA等可以插件化的应用,例如保险核算逻辑系统,可以有不同的保险品种,就有不同的逻辑。

微内核架构包含两类组件

  • 核心系统:负责和具体业务无关的通用功能,例如模块的加载,模块间通信
  • 插件模块:负责实现具体的业务逻辑

核心系统功能比较稳定,不会因为业务功能扩展而不断修改,插件则可以根据业务功能不断扩展,提供灵活性和扩展性

微内核的核心系统设计关键技术有:插件管理、插件连接、插件通信

  • 插件管理:核心系统需要知道有哪些插件可用,何时加载,如何加载等功能。
    • 常见的实现方式是插件注册表机制:核心系统提供插件注册表(可以是配置文件、代码、数据库),插件注册表,注册表含有插件的模块信息、位置、名称、加载时机,所需其他参数和插件等
  • 插件连接:指插件到核心系统是如何连接
    - 通常来说核心系统与插件系统之间必须要定义好协议和规范,能够让核心系统能够通过规范好的逻辑手段调用插件
    - 常见的连接的机制OSGi、消息模式、依赖注入、分布式协议
  • 插件通信:插件之间不一定是独立运行的,存在相互调用或者多个插件协作,比如插件的依赖,此时就要求插件进行通信,且插件之间没有直接联系,所以需要核心系统提供通信的

全称是Open Services Gateway initiative,旨在建立一个开放的服务规范,为通过网络向设备提供服务的开放的标准

  • 最早设计是针对嵌入式应用,例如机顶盒、服务网关、手机、汽车等。
  • 又因为OSGi具有动态化、热插拔、高可复用性、高效性、扩展方便等优点,被应用到了PC上的应用开发
  • 现在讨论OSGi已经和嵌入式应用关系不大了,更多是将其作为一个微内核的架构模式

模块层完成插件的管理功能,插件在OSGi中被称为Bundle,每个Bundle是一个java的jar文件,且每个Bundle都包含一个元数据文件MANIFEST.MF,其中包括了这个Bundle的基本信息(名称、描述、开发商、classpath、导入的包和输出的包等)

一个简单的MANIFEST.MF

 

3.1.2 生命周期层(Lifrcycle层)

完成插件的连接功能,提供了执行时模块管理、模块对底层OSGi框架的访问。生命周期层精确的定义了Bundle生命周期的操作(安装、更新、启动、停止、卸载),每个Bundle必须按照这些规范进行操作

3.1.3 服务层(Service层)

服务层完成插件通信的功能,OSGi通过提供一个服务注册功能,在统一的地方存放服务,一个服务想用到其他服务时,可以直接在服务注册中心拿取可用服务即可,就如同Spring的上下文存放我们的Component,我们可以通过依赖注入的方式完成组件之间的通信和引用

规则引擎从结构上看也属于微内核架构的一种实现,其中执行引擎可以看作是微内核,执行引擎解析配置好的业务流,执行其中的条件和规则,通过这种方式来支持业务的灵活

  • 规则引擎的应用领域很多,例如电商促销的打折规则:满多少送多少,买多少打几折等等
    • 其实都是对应一个输入,一个输出,只是其中的计算逻辑不通,如果全靠代码的if-else来实现可能会比较麻烦。
    • 但是如果使用规则引擎,只需要告诉引擎要哪种打折方式,并且输入值,就可以了
  • 规则引擎能够灵活应对这种需求主要在于
    • 可扩展:通过引入规则引擎,业务逻辑实现和业务系统分离,可以在不改动业务系统的情况下扩展新功能
    • 易理解:通过自然语言描述,业务人员易于理解和操作,而不像代码那样只有程序员才能理解和开发
    • 高效率:规则引擎系统一般提供了可视化的规则制定、审批、查询及管理,方便业务人员快速配置新的业务

类似:开发人员开发规则,写入到规则库,业务人员只需要通过自然语言,或者将规则进行排列组合,形成业务流程,保存在业务库中。,规则引擎在通过读取到的业务执行业务流程实现业务功能

本文地址:https://sicmodule.kub2b.com/quote/16926.html     企库往 https://sicmodule.kub2b.com/ , 查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


0相关评论
相关最新动态
推荐最新动态
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号