黑板模式
定义:黑板模式是一种常用的架构模式,应用中的多种不同数据处理逻辑相互影响和协同来完成数据分析处理。就好像多位不同的专家在同一黑板上交流思想,每个专家都可以获得别的专家写在黑板上的信息,同时也可以用自己的分析去更新黑板上的信息,从而影响其它专家。
优缺点:
黑板模式的优点:可用于非确定性问题求解,启发式解决过程,可维护性,可重用
不足:不能确保期望结果,效率低下,回退,不支持并行,共享空间的访问需要同步
实际应用
在实际应用中常见的实现模式有:
A 利用数据库
利用数据库充当黑板,不同的应用共享数据库中信息,并且可以更新数据信息。这也是最常见的实现方式。
特点:
1 便于实现信息的查询,筛选和统计,这方面关系数据库提供了SQL 92的强大支持。
2 不能用于较高实时性要求的环境,这种实现是工作在“拉模式”下的,并且高频率的访问数据库会导致严重的系统性能问题。
B 利用发布—订阅模式
这种实现方式通常采用消息队列作为黑板,队列工作在主题模式(Topic),专家作为队列的订阅者,同时可以向队列发送消息,消息会被发送至所有订阅者。以上过程实现了专家间的信息交流。
特点:
1 可以有效应用于实时性要求较高的系统,这种实现工作在“推模式”下。
2 难于实现信息的统计分析,不像实现方式一那样可以通过SQL支持,这些工作必须开发者自己完成。
黑板架构风格:黑板架构包括知识源、黑板和控制3个部分。知识源包括若干独立计算的不同单元,提供解决问题的知识,知识源响应黑板上的变化,也只修改黑板。黑板是一个全局数据库,包含解域的全部状态,是知识源互相作用的唯一媒介。知识源响应是通过黑板状态的变化来控制。黑板通常应用在对于解决问题没有确定性算法的系统中,例如信号处理、问题规划及编译器优化等软件系统的设计中。
这种模式对于没有确定解决方案策略的问题是有用的。黑板模式由3个主要组成部分组成。
黑板——包含来自解决方案空间的对象的结构化全局内存
知识源——专门的模块和它们自己的表示
控制组件——选择、配置和执行模块
所有的组件都可以访问黑板。组件可以生成添加到黑板上的新数据对象。组件在黑板上查找特定类型的数据,并通过与现有知识源的模式匹配来查找这些数据。
使用场景:
语音识别
车辆识别和跟踪
蛋白质结构识别
声纳信号的解释
应用背景:黑板模式解决没有确定可行的解决方案,将原始数据转换为高级数据结构(图表或英语词组)。存在这些问题的领域包括视觉识别,图像识别,语音识别和监视等。这种问题具体如下特点:可分解成多个子问题,但每个子问题都属于不同的专业领域。
对于这种问题,影响其解决方案的作用力如下:
-
不可能在合理的时间内遍历整个解空间;
-
鉴于领域不成熟,可能需要对同一个子任务尝试不同的算法;
-
子问题的算法各不相同;
-
输入,中间结果和最终结果的表示方式各不相同,而不同算法是根据不同范式实现的;
-
一个算法通常使用另一个算法的结果;
-
涉及不可靠的数据和近似解;
-
算法的执行顺序不确定时还可能要求支持并行性。
可解决的问题:可分解成多个子问题,但每个子问题都属于不同的专业领域。
解决方案:黑板模式正是来解决这种问题的,黑板模式就好像多位不同的专家在同一黑板上交流思想,每个专家都可以获得别的专家写在黑板上的信息,同时也可以用自己的分析去更新黑板上的信息,从而影响其它专家,正好解决了可分解成多个子问题,但每个子问题都属于不同的专业领域的问题。
实例分析:语音识别(语音翻译)
系统可以识别汉语,英语,俄语,意大利语,法语,日语这6种语言。
数据库存放事实:英式英语,美式英语,语言的各种方言
判定那种语言?
TF 语音是四川话 THEN 语音是汉语
TF 语音是美式英语 THEN 语音是英语
TF 语音是粤语 THEN 语音粤语
TF 语音是河南话和普通话 THEN 语音是汉语
解释:每种语言属于不同领域,每个语音可能掺杂多种语言,要解析就要分解,黑板模式适用