软件架构风格-黑板架构风格(Blackboard architecture)
Posted zhaotianff
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件架构风格-黑板架构风格(Blackboard architecture)相关的知识,希望对你有一定的参考价值。
参考链接:
https://cs.uwaterloo.ca/~m2nagapp/courses/CS446/1181/Arch_Design_Activity/Blackboard.pdf
http://users.encs.concordia.ca/~gregb/home/PDF/soen6461_blackboard_arch.pdf
架构模式学习之Blackboard模式
1.定义:
黑板模式是一种常用的架构模式,应用中的多种不同数据处理逻辑相互影响和协同来完成数据分析处理。就好像多位不同的专家在同一黑板上交流思想,每个专家都可以获得别的专家写在黑板上的信息,同时也可以用自己的分析去更新黑板上的信息,从而影响其它专家。
2.优缺点:
黑板模式的优点:可用于非确定性问题求解,启发式解决过程,具有可维护性,可重用性。
不足:不能确保期望结果,效率低下,回退,不支持并行,共享空间的访问需要同步。
3.实际应用:
A 利用数据库
利用数据库充当黑板,不同的应用共享数据库中信息,并且可以更新数据信息。这也是最常见的实现方式。
特点:
1 便于实现信息的查询,筛选和统计,这方面关系数据库提供了SQL 92的强大支持。
2 不能用于较高实时性要求的环境,这种实现是工作在“拉模式”下的,并且高频率的访问数据库会导致严重的系统性能问题。
B 利用发布—订阅模式
这种实现方式通常采用消息队列作为黑板,队列工作在主题模式(Topic),专家作为队列的订阅者,同时可以向队列发送消息,消息会被发送至所有订阅者。以上过程实现了专家间的信息交流。
特点:
1 可以有效应用于实时性要求较高的系统,这种实现工作在“推模式”下。
2 难于实现信息的统计分析,不像实现方式一那样可以通过SQL支持,这些工作必须开发者自己完成。
4.这种模式对于没有确定解决方案策略的问题是有用的。黑板模式由3个主要组成部分组成。
- 黑板——包含来自解决方案空间的对象的结构化全局内存
- 知识源——专门的模块和它们自己的表示
- 控制组件——选择、配置和执行模块
所有的组件都可以访问黑板。组件可以生成添加到黑板上的新数据对象。组件在黑板上查找特定类型的数据,并通过与现有知识源的模式匹配来查找这些数据。
使用场景:
- 语音识别
- 车辆识别和跟踪
- 蛋白质结构识别
- 声纳信号的解释
Blackboard模式解决没有可行而确定的解决方案将原始数据转换为高级数据结构(如图表或英语词组)。存在这种问题的领域包括视觉识别、图像识别、语音识别和监视等。这种问题具有如下特点:可分解成多个子问题,但每个子问题都属于不同的专业领域。
对于这种问题,影响其解决方案的作用力如下。
- 不可能在合理的时间内遍历整个解空间。
- 鉴于领域不成熟,可能需要对同一个子任务尝试不同的算法。
- 子问题的算法各不相同。
- 输入、中间结果和最终结果的表示方式各不相同,而不同算法是根据不同范式实现的。
- 一个算法通常使用另一个算法的结果。
- 涉及不可靠的数据和近似解。
- 算法的执行顺序不确定时还可能要求支持并行性。
实现
参考:https://www.cnblogs.com/IcanFixIt/p/7518146.html
https://blog.csdn.net/zsdjoo/article/details/45500247
以上是关于软件架构风格-黑板架构风格(Blackboard architecture)的主要内容,如果未能解决你的问题,请参考以下文章