什么是微内核架构
定义
- 微内核
- 核心功能
- 资源封装
- 插件
- 可插拔
- 可插拔
系统核心
- 资源封装
- 硬件接口
- 系统资源访问接口
- 环境/上下文(context)访问接口
- 系统事件接口
- 定义插件规范
- 使用场景
- 规则
- 条件
- 核心功能
- 支持系统运作的最小功能集
- 职责分离
- 通用流程由核心系统定义
- 核心定义规范,插件具体实现
插件模块
- 核心系统能力的扩展
- 遵循核心系统规范
- 实现其逻辑外延和业务逻辑
- Single Responsibility
- 专注于其独立功能
- 只能通过核心提供的接口操作系统资源
- 插件间无依赖
- 尽可能避免依赖其他插件
注册
- 插件可用性
- 获取插件的方式
- 插件信息抽象规范:名称、数据规范、访问协议
连接
- 自定义连接方式
- OSGI,点对点绑定(依赖注入)
- web service,message,etc
- 通信规范
- 标准规范配合版本策略
- 自定义规范配合Adapter
事件
微内核架构的优缺点
优点
- 符合开闭原则
- 核心系统封闭
- 插件提供开放性
- 整体系统可以持续升级
- 良好的隔离性
- 核心系统可以关闭插件
- 错误的传播范围有限
- 插件内的错误不会被传播到核心系统
- 各自独立升级改进
- 可能有兼容性问题
- 灵活性
- 核心系统保持稳定,将变化尽量隔离在插件层
- 插件根据核心提供接口规范和规范来提供丰富的功能
- 整体保持开放,持续进化
- 可测试性
- 核心系统和插件系统可以分开测试
- 插件可以运行在模拟环境
- 性能
- 通过简化核心系统,提高性能
- 插件按需加载,降低资源消耗
- 可以动态关闭插件以保护核心系统
- 易于部署
- 插件可在运行时动态添加到核心系统
- 减少核心系统停机时间
缺点
- 开发难度高
- 需要分离核心功能与插件功能
- 插件需要可以热插拔
- 需要专门注册协议和通信协议
- 可扩展性不高
- 主要用于开发产品,不考虑扩展性
- 不以可扩展性见长
- 可以结合其他模式获得扩展性
设计微内核系统
设计系统核心
- 定义核心功能:实现MVP
- 封装系统资源:插件通过接口访问
- 开放集成点
定义开放规范
- 核心系统提供的接口及版本
- 上下文(context),环境参数
- 回调(call back)、钩子(hook)、事件(event)
- 集成规范
注册规范
定义通信机制
- 同步/异步
- 本地/远程
- 数据格式
实现插件
装载插件
- 基于注册表获取插件信息
- 装载机制
- 启动期/运行期
- 内存/远程
- 装载条件(触发条件)