#微内核架构
#操作系统内核的启示
Linux 和 Windows 的设计哲学完全不同:
Linux:宏内核
- 所有功能(驱动、文件系统、内存管理)都在内核中
- 性能高,但内核庞大
Windows:微内核设计
- 内核只包含最基本的功能(调度、内存、基本 IPC)
- 其他功能作为服务进程运行
- 稳定但性能稍低微内核架构的软件设计借鉴了这个思想:把核心功能保留在内核,把扩展功能放在插件中。
#二、微内核架构核心🔴
#2.1 核心组件
// 核心系统:最小功能集
class OrderCore {
// 注册插件
public void registerPlugin(Plugin plugin) {
plugins.put(plugin.getName(), plugin);
}
// 触发插件
public void process(Order order) {
for (Plugin plugin : plugins.values()) {
if (plugin.supports(order)) {
plugin.execute(order);
}
}
}
private Map<String, Plugin> plugins = new ConcurrentHashMap<>();
}
// 插件接口
interface Plugin {
String getName();
boolean supports(Order order);
void execute(Order order);
}#2.2 插件实现
// 折扣插件
class DiscountPlugin implements Plugin {
@Override
public String getName() { return "discount"; }
@Override
public boolean supports(Order order) {
return order.hasCoupon();
}
@Override
public void execute(Order order) {
Money discount = couponService.calculate(order.getCoupon());
order.applyDiscount(discount);
}
}
// 积分插件
class PointsPlugin implements Plugin {
@Override
public String getName() { return "points"; }
@Override
public boolean supports(Order order) {
return true; // 所有订单都计算积分
}
@Override
public void execute(Order order) {
int points = order.getAmount().divide(100).intValue();
pointsService.add(order.getUserId(), points);
}
}#三、应用场景🟡
| 场景 | 内核 | 插件 |
|---|---|---|
| IDE(VS Code) | 编辑、文件树 | 语言支持、主题 |
| 浏览器 | 渲染、安全 | 扩展程序 |
| 电商平台 | 订单、支付 | 促销、推荐、物流 |
| CI/CD | 任务调度 | 构建工具、部署目标 |
#四、面试总结
| 级别 | 期望回答 |
|---|---|
| P5 | 能说出微内核架构的基本结构 |
| P6 | 能识别微内核的适用场景 |
| P7 | 有实际插件系统设计经验 |