黑板模式是一種常用的架構模式,應用中的多種不同數據處理邏輯相互影響和協同來完成數據分析處理。就好像多位不同的專家在同一黑板上交流思想,每個專家都可以獲得別的專家寫在黑板上的信息,同時也可以用自己的分析去更新黑板上的信息,從而影響其它專家。
應用場景
黑板模式的應用場景是要解決的任務可以分為多個子任務。解決方案如下圖所示:

黑板模式的優點:可用於非確定性問題求解,啟發式解決過程,可維護性,可重用
不足:不能確保期望結果,效率低下,回退,不支持並行,共享空間的訪問需要同步
實際應用
在實際應用中常見的實現模式有:
A 利用數據庫
利用數據庫充當黑板,不同的應用共享數據庫中信息,並且可以更新數據信息。這也是最常見的實現方式。
特點:
1 便於實現信息的查詢,篩選和統計,這方面關系數據庫提供了SQL 92的強大支持。
2 不能用於較高實時性要求的環境,這種實現是工作在“拉模式”下的,並且高頻率的訪問數據庫會導致嚴重的系統性能問題。
B 利用發布—訂閱模式
這種實現方式通常采用消息隊列作為黑板,隊列工作在主題模式(Topic),專家作為隊列的訂閱者,同時可以向隊列發送消息,消息會被發送至所有訂閱者。以上過程實現了專家間的信息交流。
特點:
1 可以有效應用於實時性要求較高的系統,這種實現工作在“推模式”下。
2 難於實現信息的統計分析,不像實現方式一那樣可以通過SQL支持,這些工作必須開發者自己完成。
典型應用
信號處理領域,數據庫,人工智能系統,如網絡信息檢索、電子商務、自動控制、辦公自動化、商業管理智能決策、語音和模式識別、智能控制領域等。
黑板模式由3個主要組成部分組成。
- 黑板——包含來自解決方案空間的對象的結構化全局內存
- 知識源——專門的模塊和它們自己的表示
- 控制組件——選擇、配置和執行模塊
所有的組件都可以訪問黑板。組件可以生成添加到黑板上的新數據對象。組件在黑板上查找特定類型的數據,並通過與現有知識源的模式匹配來查找這些數據。
類圖如下:

解決方案
黑板架構背后的理念是,一系列獨立的程序攜手合作,致力於處理同一個數據結構。
在解決問題的過程中,系統通過合並、修正或否決部分解來完成工作。每個部分解都針對一個子問題,是這個子問題的最終解在特定階段的表現形式。所有的可能解構成解空間,並被組織成多個抽象層級,其中最低層為輸入的內部表示,最高層包含系統要解決的整個問題的可能解。
之所以使用名稱“黑板”(blackboard),是因為它讓人想起專家們站在黑板前協作解決問題的情形。專家們通常自行決定截下來該由誰來到黑板前,而在這里介紹的模式中,如果有多個程序都能提供幫助,將由調停者(moderator)組件決定這些程序的執行順序。
結構
對系統進行划分,使其包含一個黑板組件、一系列知識源以及一個控制組件。
黑板為中央數據存儲區,解空間中的元素及控制數據都存儲在這里。黑板提供了一個接口,讓所有知識源都能夠對其進行讀寫。
每個知識源都是一個獨立的子系統,解決整個問題的特定方面。
控制組件運行一個監視黑板內容變化的循環,並決定接下來采取什么措施。
實現
- 定義問題。
- 定義問題的解空間。我們將解分為中間解和頂級解,還將其分為部分解和完整解。頂級解位於最高抽象層級,其他層級的解為中間解。完整解是整個問題的答案,而部分解是部分問題的答案。
- 將求解過程分為如下步驟: (1)定義如何將解轉換為上一層級的解。(2)描繪如何作出同一抽象層級的推測。(3)詳細說明如何從其他層級尋找證據,以證實做出的推測。(4)指出可利用什么樣的知識將部分解空間排除在外。
- 根據子任務將知識划分為專業知識源。
- 定義黑板的詞表。
- 規范系統的控制機制。
- 實現知識源。