Skip to content
RuaRuan
返回

黑板架构(Blackboard Architecture)模式

核心定义

黑板架构是一种数据驱动的、以共享知识库为中心的架构风格。它将问题求解任务拆分为多个相互独立的知识源(专家模块),这些知识源不直接通信,而是通过一个全局可访问的黑板(共享数据结构)进行协作。一个调度器(控制组件)监控黑板上的变化,动态决定下一步激活哪个知识源。

架构视角的主要特点

  1. 以黑板为唯一的共享存储:所有知识源只读/写黑板,彼此解耦。
  2. 知识源相互独立:每个知识源只解决特定子问题,可插拔、可替换。
  3. 基于条件触发:知识源不是持续运行,而是在看到黑板上出现自己“感兴趣”的数据时被激活。
  4. 集中式控制:调度器根据某种策略(优先级、最新结果、最有可能推进等)从众多触发的知识源中选择一个执行。

一个形象的架构图(文字示意)

      ┌─────────────┐     ┌─────────────┐     ┌─────────────┐
      │ 知识源 A    │     │ 知识源 B    │     │ 知识源 C    │
      └──────┬──────┘     └──────┬──────┘     └──────┬──────┘
             │                   │                   │
             │ (只读/写)          │ (只读/写)          │ (只读/写)
             ▼                   ▼                   ▼
        ┌────────────────────────────────────────────┐
        │                  黑板                       │
        │  (问题状态、部分解、假设、最终答案)           │
        └────────────────────┬───────────────────────┘

                             │ (监控变化)

                    ┌─────────────────┐
                    │    调度器        │
                    │  (控制决策)       │
                    └─────────────────┘

常见的应用架构例子

如果你是想在系统设计中选择黑板架构,它的适用场景通常是:没有确定算法、需要多种专业知识、可以接受“增量式、近似解”的问题。反之,如果问题有明确步骤或确定性算法,黑板架构反而会带来不必要的复杂度和性能开销。

简而言之:黑板架构 = 以黑板为中心的、知识源协作的、由调度器驱动的软件架构模式,它与“黑板系统”是同一个核心思想的两种表述。

可以用一个生动的比喻来理解它:

想象几位不同领域的专家(比如厨师、营养师、食材采购员)围坐在一块黑板前,要共同完成一道创新菜谱。每个人都可以随时看黑板上已有的信息(如“热量需500卡”、“预算50元”、“冰箱有鸡肉”),并根据自己的专长,在黑板上添加新信息或修改方案。他们从不直接对话,所有交流和协作都通过黑板这个公共区域进行。最终,当信息足够完整时,问题就解决了。

核心组成部分

一个标准的黑板系统有三个核心模块:

  1. 黑板 (Blackboard):一个全局可访问的共享数据库,用来存放问题的初始数据、中间状态、部分解决方案和最终结果。它就像一个不断演化的公共工作区。

  2. 知识源 (Knowledge Sources):一系列独立的问题解决者。每个知识源只精通某个特定领域,能解决部分问题。它们各自“盯着”黑板,一旦发现条件满足(比如黑板上出现了自己擅长处理的信息),就会被触发执行,并把处理结果(新知识)写回黑板。

  3. 控制机制 (Control Component):这个系统的**“调度中心”**。它负责监控黑板上的变化,决定在众多被触发的知识源中,到底该让哪一个来执行。它的策略(比如优先级最高、或最可能推进问题的)直接决定了系统的效率和能否找到答案。

主要特点

https://blog.csdn.net/qq_53201790/article/details/148604164

https://developer.aliyun.com/article/1491358



下一篇
解决 android studio build output 中文乱码