架构学习-微内核架构(六)

240 阅读3分钟

微内核架构定义:

微内核

  • 核心功能
  • 资源封装

插件

  • 可插拔
  • 功能扩展

image.png

系统核心:

资源封装

  • 硬件接口
  • 系统资源访问接口
  • 环境/上下文(context)访问接口
  • 系统事件接口

定义插件规范

  • 使用场景
  • 规则
  • 条件

核心功能

  • 支持系统运作的最小功能集

职责分离

  • 通用流程由核心系统定义
  • 核心定义规范,插件具体实现

插件模块

核心系统能力扩展

  • 遵循核心系统规范
  • 实现其逻辑外延和业务逻辑

Single Responsibility

  • 专注于其独立功能
  • 只能通过核心提供的接口操作系统资源

插件间无依赖

  • 尽可能避免依赖其他插件
  • 只依赖于核心

隔离

  • 插件不能影响核心

注册:

插件可能性

获取插件的方式

插件信息抽象规范

  • 名称,数据规范,访问协议

连接:

自定义连接方式

  • OSGI,点对点绑定(依赖注入)
  • web service,message,etc

通信规范

  • 标准规范配合版本策略
  • 自定义规范配合Adapter

image.png

优点:

符合开闭原则

  • 核心系统封闭
  • 插件提供开放性
  • 整体系统可持续升级

良好的隔离性

  • 核心系统可以关闭插件
  • 错误的传播范围有限(插件内的错误不会被传播到核心系统)
  • 各自独立升级改进(可能有兼容性问题)

灵活性

  • 核心系统保持稳定,将变化尽量隔离在插件层
  • 插件根据核心提供的接口和规范来提供丰富的功能
  • 整体保持开发,持续进化

可测试性

  • 核心系统和测试系统可以分开测试
  • 插件可以运行在模拟环境

性能

  • 通过简化核心系统,提高其性能
  • 插件按需加载,降低资源消耗
  • 可以动态关闭插件以保护核心系统

易于部署

  • 插件可以在运行时动态添加到核心系统
  • 减少核心系统停机时间

缺点:

开发难度高

  • 需要分离核心功能和插件功能
  • 插件需可以热插拔
  • 需要专门的注册协议和通信协议

可扩展性不高

  • 主要用于开发产品,不考虑扩展性
  • 不以可扩展性见长
  • 可以结合其他模式获得扩展性

如何使用微内核

设计系统核心

定义核心功能

  • 实现MVP

封装系统资源

  • 插件通过接口访问

开放与集成点

  • 支持与插件的集成和通信

定义开放规范:

核心系统提供的接口及版本

上下文(context),环境参数

回调(call back),钩子(hook),事件(event)

集成规范

注册规范

image.png

定义通信机制

  • 同步/异步
  • 本地/远程
  • 数据格式

实现插件

image.png

装载插件

基于注册表获取注册信息

装载机制

  • 启动期/运行期
  • 内存/远程

装载条件

  • 触发条件