软件架构_黑板模式

  黑板模式是一种经常使用的架构模式,是观察者模式的一个扩展,应用中的多种不一样数据处理逻辑相互影响和协同来完成数据分析处理。容许消息的读写同时进行,普遍地交互消息。就好像多位不一样的专家在同一黑板上交流思想,每一个专家均可以得到别的专家写在黑板上的信息,同时也能够用本身的分析去更新黑板上的信息,从而影响其它专家。好比A观察了B、C、D、E、F这么多个对象,按照观察者模式,当B、C、D、E、F中某个对象状态改变时,经过初始化一个A对象而后利用A对象去调用operation操做。可是在黑板模式中是这样,B、C、D、E、F一旦状态改变,它会将其记录在一个相似黑板的统一中央数据中,而后A对象只需从黑板上关注本身的观察对象状态是否发生改变,一旦有改变则调用operation()操做。数据库

 

 

  黑板模式通常不会对架构产生什么影响,但它一般会要求有一个清晰的消息结构。黑板模式通常都会提供一系列的过滤器,以便消息的消费者再也不接触到与本身无关的消息。在实际开发中,黑板模式常见的有两种实现方式:网络

  数据库做为黑板架构

  利用数据库充当黑板,生产者更新数据信息,不一样的消费者共享数据库中信息,这是最多见的实现方式。该方式在技术上容易实现,开发量较少,熟悉度较高。缺点是在大量消息和高频率访问的状况下,性能会受到必定影响。在该模式下,消息的读取是经过消费者主动“拉取”,所以该模式也叫作“拉模式”。性能

  优势:便于实现信息的查询,筛选和统计,这方面关系数据库提供了SQL 92的强大支持。
  缺点:不能用于较高实时性要求的环境,这种实现是工做在“拉模式”下的,而且高频率的访问数据库会致使严重的系统性能问题。

  消息队列做为黑板人工智能

  以消息队列做为黑板,经过订阅-发布模型便可实现黑板模式。这也是黑板模式被淡忘的一个重要缘由:消息队列(Message Queue)已经很是普及了,作Java开发的已经没有几个不知道消息队列的。在该模式下,消费者接收到的消息是被主动推送过来的,所以该模式也称为“推模式”。spa

  优势:能够有效应用于实时性要求较高的系统,这种实现工做在“推模式”下。对象

  缺点:难于实现信息的统计分析,不像实现方式一那样能够经过SQL支持,这些工做必须开发者本身完成。
 
 
  典型应用:信号处理领域,数据库,人工智能系统,如网络信息检索、电子商务、自动控制、办公自动化、商业管理智能决策、语音和模式识别、智能控制领域等。
相关文章
相关标签/搜索