微内核架构

微内核架构(Microkernel Architecture),也被称为插件化架构(Plug-in Architecture),是一种面向功能进行拆分的可扩展性架构,通常用于实现基于产品(原文为 product-based,指存在多个版本、需要下载安装才能使用,与 web-based 相对应)的应用。

基本架构

微内核架构包含两类组件:核心系统(core system)和插件模块(plug-in modules)。核心系统负责和具体业务功能无关的通用功能,例如模块加载、模块间通信等;插件模块负责实现具体的业务逻辑,例如专栏前面经常提到的“学生信息管理”系统中的“手机号注册”功能。

关键技术

  1. 插件管理
    • 哪些插件可用、什么时候加载等。常见方法是插件注册表机制。核心系统提供插件注册表(可以是配置文件,也可以是代码,还可以是数据库),插件注册表含有每个插件模块的信息,包括它的名字、位置、加载时机(启动就加载,还是按需加载)等。
  2. 插件连接
    • 插件如何链接到核心系统,需要核心系统提供一种链接规范。常见的连接机制有 OSGi(Eclipse 使用)、消息模式、依赖注入(Spring 使用),甚至使用分布式的协议都是可以的,比如 RPC 或者 HTTP Web 的方式。
  3. 插件通信
    • 插件之间的通信。由于插件之间完全解耦,但若需要协作,那么只能通过核心系统进行通信,即核心系统需要提供插件通信机制

上面这个,让我觉得 Spring 的设计和这个差不多啊。Spring 提供了插件管理 + 插件连接方式。Spring 要求基于 xxx 格式来生成 jar 包从而可以识别 Bean 对象,然后通过 XML 或者 JavaBean 等形式来进行配置 Bean 对象的内容和加载时机等,最后通过依赖注入的方式将 Bean 对象注入到核心系统里。

但怎么说呢,插件式的方式就是一种设计思想。若需要类似于插件式的系统时,可以按照上述需要关注的技术,或者类似于 Spring 的形式,或者极客文章中提到的规则执行引擎的方式进行设计。

参考链接

37 | 微内核架构详解-从0开始学架构-极客时间