知识卡片
微内核架构的三个设计关键点:插件管理、连接与通信
内容
微内核架构(也叫插件化架构)是面向功能拆分的可扩展架构,常用于基于产品的应用(如Eclipse这类IDE、UNIX这类操作系统、淘宝App这类客户端软件,甚至保险公司把不同险种的核算逻辑各自封装成插件)。它由两类组件构成:核心系统负责和具体业务无关的通用能力(模块加载、模块间通信等),插件模块负责实现具体业务逻辑(比如学生信息管理系统里的”手机号注册”功能)。核心系统本身相对稳定,不会因为业务扩展而频繁改动,插件模块则可以根据业务需要不断扩展——本质就是把”变化的部分”封装进插件,既能灵活扩展、又不影响整体系统的稳定性。核心系统的设计要解决三个关键点。插件管理:核心系统要知道当前有哪些插件可用、怎么加载、什么时候加载,常见做法是插件注册表机制——注册表可以是配置文件、代码,也可以是数据库,记录每个插件的名字、位置、加载时机(启动即加载还是按需加载)等信息。插件连接:指插件如何接入核心系统,核心系统必须先定义好插件的连接规范,插件按规范实现、核心系统按规范加载,常见连接机制有OSGi(Eclipse采用)、消息模式、依赖注入(Spring采用),甚至用RPC或HTTP这类分布式协议也可以。插件通信:设计上插件之间理应完全解耦,但实际业务运行时某个流程往往需要多个插件协作,这就要求插件间能通信——由于插件彼此没有直接联系,通信必须经过核心系统转接,核心系统因此要提供专门的插件通信机制,这个道理和计算机硬件很像:CPU、硬盘、内存、网卡是各自独立设计的配件,但运行时CPU和内存、内存和硬盘之间必然要通信,计算机靠主板上的总线来承载这些配件之间的通信,微内核的核心系统扮演的正是这个”总线”的角色。
结构图:
flowchart TB
A["微内核架构:核心系统(稳定)+插件模块(可扩展)"]
A --> B["插件管理<br/>核心系统需知道有哪些插件/如何加载/何时加载<br/>常见做法:插件注册表(记录名字/位置/加载时机)"]
A --> C["插件连接<br/>核心系统定义连接规范,插件按规范实现<br/>常见机制:OSGi/消息模式/依赖注入/RPC/HTTP"]
A --> D["插件通信<br/>插件间理应解耦,但业务需要协作时<br/>必须经核心系统转接(类比计算机主板总线)"]
参考来源
- 位置:《从零开始学架构》第37讲《微内核架构详解》"基本架构""设计关键点"(源文件:_epub-src/OEBPS/text00003.html)
- 结论依据:原文说明"核心系统负责和具体业务功能无关的通用功能……插件模块负责实现具体的业务逻辑……微内核的架构本质就是将变化部分封装在插件里面",并展开插件管理、插件连接、插件通信三个设计关键点,以计算机CPU/内存/硬盘通过总线通信类比插件通信机制,直接支撑本卡片结论与结构图。
- 原始内容:微内核的架构本质就是将变化部分封装在插件里面,从而达到快速灵活扩展的目的,而又不影响整体系统的稳定……微内核的核心系统设计的关键技术有:插件管理、插件连接和插件通信……微内核的核心系统也必须提供类似的通信机制,各个插件之间才能进行正常的通信。