Appearance
仓库风格,还有个别名叫做以数据为中心的风格,可见它关注的重点是数据的存储和共享方式。仓库有两种核心构件:中央数据单元和独立构件。
中央数据单元存储和管理所有数据和系统当前状态;独立构件通过和中央数据存储交互,来执行逻辑处理。
仓库风格包括的子风格有:数据库系统、超文本系统、黑板风格。
数据库系统
数据库架构是仓库风格最常见的形式,所有的关系型和非关系型数据库的使用都可以归为这一风格。它有一个中央数据库或者数据仓库,作为共享数据源,保存当前系统的数据状态;大量的分布式和不同业务逻辑的系统,作为独立处理元素,对数据元素进行操作。主要特点:
- 共享数据源:集中式的共享数据库。
- 独立处理单元:分布式的独立处理节点。
超文本系统
超文本系统风格主要是用于共享静态网页。比较经典的例子如:
- CMS内容管理系统:保存有js、CSS、 htmI等静态网页,用于让不同领域的前端节点来共享地访问静态页面元素和框架。
- 分布式文件互通:节点各自存储部分文档,通过节点跳跃、网状链接等方式共享静态文件。
主要特点:
- 多种共享形式:超文本系统可以是集中式的文件资源方式,也可以是网状互通的 分布式资源共享方式。
- 非结构化文件:适合管理非结构化文件,如静态文件、对象存储等。
黑板风格
黑板是所有软件架构风格里最复杂的一套风格。通常只在特定领域使用,比如语音识别、模式识别、信号处理等。
黑板系统是一种问题求解模型。以语音识别为例,通常一段语音的识别没有必然正确的最优解,只根据现有知识和模型的匹配近似解。将原有问题通过变换、分割等方式转换为多个子问题,并将原始数据也相应地转换为高级数据结构。
1000个人心中有1000个哈姆雷特,同样地,1000个专家(或专家系统)也会有1000个不同的子问题解。用一个黑板,让这些专家将已经获得的信息、已经处理完的数据、已经完成的子问题都写到同一个黑板上。其他专家可以通过这个共享的黑板的数据变更,很快地作出反应,优化自己手上的子问题计算。
这个黑板,就是用于记录组织推理步骤、控制状态数据和问题求解之领域知识的框架。它将问题的解空间组织成一个或多个应用相关的分级结构。这些分级结构将由不同的专家(系统), 通过不同知识表达方法、推理框架和控制机制的组合来形成各自的知识源。知识源之间没有直接的数据传输,所有交互都通过共享的黑板的数据更新来完成。
主要特点:
- 分布式知识源:不同的子问题采用不同的数据集、推理框架和控制机制,生产分布式的知识源。
- 集中式的数据共享:通过黑板这个集中式逻辑系统完成所有知识源的数据共享。
- 集中式控制:通过黑板的数据更新,通知各数据源,从而驱动分布式计算的进行。
仓库风格总结
仓库风格是5大架构风格中,最偏重数据共享的一种风格。它描述了在一个应用系统中,数据是如何被分布式系统所存储和访问的:
- 数据库风格做通用的数据集中式共享方式。
- 超文本系统用于静态文件的共享。
- 黑板用于信号处理等特殊领域的知识源的共享,和子问题解的流程驱动。
- 它们组合起来,真正实现了分布式世界中数据的存储和共享。