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