微内核架构

作者: 短暂瞬间 | 来源:发表于2019-05-06 22:02 被阅读32次

    第85篇

    极客时间《从0开始学架构》课程笔记。

    定义

    微内核架构(Microkernel Architecture),也被称为插件化架构(Plug-in Architecture),是一种面向功能进行拆分的可扩展性架构,通常用于实现基于产品的应用。

    基本架构

    • 微内核架构包含两类组件:核心系统(core system)和插件模块(plug-in modules)。
    • 核心系统负责和具体业务功能无关的通用功能,例如模块加载、模块间通信等;插件模块负责实现具体的业务逻辑。
    • 核心系统功能比较稳定,不会因为业务功能扩展而不断修改,插件模块可以根据业务功能的需要不断地扩展。
    • 微内核的架构本质就是将变化部分封装在插件里面,从而达到快速灵活扩展的目的,而又不影响整体系统的稳定。
    微内核基本架构

    设计关键点

    1. 插件管理
    • 插件注册机制:核心系统需要知道哪些插件可用、如何加载、什么时候加载
    • 插件注册表:包含每个插件模块的信息,如名字、位置、加载时机等, 可以是配置文件、代码或数据库
    1. 插件连接
    • 连接规范:明确插件如何连接到核心系统,由核心系统制定,插件按照规范实现
    • 常见连接机制:OSGi、消息模式、依赖注入、分布式协议
    1. 插件通信
    • 插件间通信:多个插件协作时需要进行通信,通信必须通过核心系统提供的插件通信机制实现,就像计算机的主板总线

    OSGi架构

    • OSGi全称Open Services Gateway initiative,一般都是指 OSGi 的规范
    • Eclipse 采用 OSGi 标准后,OSGi 成为了首选的插件化标准
    • OSGi 是一个插件化的标准,而不是一个可运行的框架,Eclipse 采用的 OSGi 框架称为 Equinox,类似的实现还有 Apache 的 Felix、Spring 的 Spring DM
    OSGi框架的逻辑架构图
    • 模块层(Module层):实现插件管理功能。OSGi 中,插件被称为 Bundle,每个 Bundle 是一个 Java 的 JAR 文件,每个 Bundle 里面都包含一个元数据文件 MANIFEST.MF,这个文件包含了 Bundle 的基本信息
    • 生命周期层(Lifecycle 层):实现插件连接功能,提供了执行时模块管理、模块对底层 OSGi 框架的访问。生命周期层精确地定义了 Bundle 生命周期的操作(安装、更新、启动、停止、卸载),Bundle 必须按照规范实现各个操作
    • 服务层(Service 层):实现插件通信的功能。服务注册功能用于各个插件将自己能提供的服务注册到 OSGi 核心的服务注册中心,服务注册指实现插件间通信的机制

    规则引擎架构

    • 规则引擎从结构上来看也属于微内核架构的一种具体实现
    • 执行引擎可以看作是微内核,执行引擎解析配置好的业务流,执行其中的条件和规则
    • 规则引擎能够很灵活的应对各种促销规则、计费规则的实现以及组合需求
    • 规则引擎的特点:可扩展、易理解、高效率
    规则引擎基本架构
    • 开发人员将业务功能分解提炼为多个规则,将规则保存在规则库中。
    • 业务人员根据业务需要,通过将规则排列组合,配置成业务流程,保存在业务库中。
    • 规则引擎执行业务流程实现业务功能。
    • 插件管理:规则引擎中的规则就是微内核架构的插件,引擎就是微内核架构的内核
    • 插件连接:规则引擎的插件连接实现机制其实就是规则语言
    • 插件通信:规则引擎的规则之间进行通信的方式就是数据流和事件流,规则只需要输出数据或者事件,由引擎将数据或者事件传递到下一个规则
    • 目前最常用的规则引擎是开源的 JBoss Drools,采用 Java 语言编写,基于 Rete 算法

    相关文章

      网友评论

        本文标题:微内核架构

        本文链接:https://www.haomeiwen.com/subject/qlljoqtx.html