微内核架构

操作系统内核的启示

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有实际插件系统设计经验