软件架构模式,诞生于软件开发的最大难题——需求变更。由于需求变更,导致了大量项目因为超出预算的人力、时间而归于失败。软件开发成本有限的,但需求变更似乎是无限的,这成为了一个非常难解决的问题。

描述框架的架构 如何描述架构模式?_处理单元

   在软件界多年的架构设计工作之后,人们总结出一些经验,这些经验被成为“架构模式”。架构模式包含了“名称”“适应场景”“模块定义”“模块关系”这几个部分。

  • 分层模式

   这种模式也称为多层体系架构模式。分层架构(layered architecture)是最常见的软件架构,也是事实上的标准架构。这种架构将软件分成若干个水平层,每一层都有清晰的角色和分工,不需要知道其他层的细节。层与层之间通过接口通信。虽然没有明确约定,软件一定要分成多少层,但是四层的结构最常见。

  1. 表示层(也称为UI层)
  2. 应用层(也称为服务层)
  3. 业务逻辑层(也称为领域层)
  4. 数据访问层(也称为持久化层)

描述框架的架构 如何描述架构模式?_处理单元_02

  • 客户端-服务器模式

   这种模式由两部分组成:一个服务器和多个客户端。服务器组件将为多个客户端组件提供服务。客户端从服务器请求服务,服务器为这些客户端提供相关服务。此外,服务器持续侦听客户机请求。

描述框架的架构 如何描述架构模式?_软件架构_03

  • 主备模式

   这种模式由两方组成;主设备和从设备。主设备组件在相同的从设备组件中分配工作,并计算最终结果,这些结果是由从设备返回的结果。

描述框架的架构 如何描述架构模式?_软件架构_04

  • 管道-过滤器模式

   此模式可用于构造生成和处理数据流的系统。每个处理步骤都封装在一个过滤器组件内。要处理的数据是通过管道传递的。这些管道可以用于缓冲或用于同步。

描述框架的架构 如何描述架构模式?_描述框架的架构_05

  • 事件驱动模式

   事件(event)是状态发生变化时,软件发出的通知。

事件驱动架构(event-driven architecture)就是通过事件进行通信的软件架构。它分成四个部分。

描述框架的架构 如何描述架构模式?_架构模式_06

  1. 事件队列(event queue):接收事件的入口
  2. 分发器(event mediator):将不同的事件分发到不同的业务逻辑单元
  3. 事件通道(event channel):分发器与处理器之间的联系渠道
  4. 事件处理器(event processor):实现业务逻辑,处理完成后会发出事件,触发下一步操作

对于简单的项目,事件队列、分发器和事件通道,可以合为一体,整个软件就分成事件代理和事件处理器两部分。

描述框架的架构 如何描述架构模式?_架构模式_07

  • 微核模式

微核架构(microkernel architecture)又称为"插件架构"(plug-in architecture),指的是软件的内核相对较小,主要功能和业务逻辑都通过插件实现。内核(core)通常只包含系统运行的最小功能。插件则是互相独立的,插件之间的通信,应该减少到最低,避免出现互相依赖的问题。

描述框架的架构 如何描述架构模式?_软件架构_08

  • 点对点模式

   在这种模式中,单个组件被称为对等点。对等点可以作为客户端,从其他对等点请求服务,作为服务器,为其他对等点提供服务。对等点可以充当客户端或服务器或两者的角色,并且可以随时间动态地更改其角色。

描述框架的架构 如何描述架构模式?_处理单元_09

  • 事件总线模式

   这种模式主要是处理事件,包括4个主要组件:事件源、事件监听器、通道和事件总线。消息源将消息发布到事件总线上的特定通道上。侦听器订阅特定的通道。侦听器会被通知消息,这些消息被发布到它们之前订阅的一个通道上。

描述框架的架构 如何描述架构模式?_处理单元_10

  • 模型-视图-控制器模式

   这种模式,也称为MVC模式,把一个交互式应用程序划分为3个部分,

  1. 模型:包含核心功能和数据
  2. 视图:将信息显示给用户(可以定义多个视图)
  3. 控制器:处理用户输入的信息

这样做是为了将信息的内部表示与信息的呈现方式分离开来,并接受用户的请求。它分离了组件,并允许有效的代码重用。

描述框架的架构 如何描述架构模式?_处理单元_11

  • 黑板模式

   这种模式对于没有确定解决方案策略的问题是有用的。黑板模式由3个主要组成部分组成。

  1. 黑板——包含来自解决方案空间的对象的结构化全局内存
  2. 知识源——专门的模块和它们自己的表示
  3. 控制组件——选择、配置和执行模块

所有的组件都可以访问黑板。组件可以生成添加到黑板上的新数据对象。组件在黑板上查找特定类型的数据,并通过与现有知识源的模式匹配来查找这些数据。

描述框架的架构 如何描述架构模式?_架构模式_12

  • 解释器模式

   这个模式用于设计一个解释用专用语言编写的程序的组件。它主要指定如何评估程序的行数,即以特定的语言编写的句子或表达式。其基本思想是为每种语言的符号都有一个分类。

描述框架的架构 如何描述架构模式?_软件架构_13

  • 云架构

   云结构(cloud architecture)主要解决扩展性和并发的问题,是最容易扩展的架构。它的高扩展性,主要原因是没使用中央数据库,而是把数据都复制到内存中,变成可复制的内存数据单元。然后,业务处理能力封装成一个个处理单元(prcessing unit)。访问量增加,就新建处理单元;访问量减少,就关闭处理单元。由于没有中央数据库,所以扩展性的最大瓶颈消失了。由于每个处理单元的数据都在内存里,最好要进行数据持久化。

这个模式主要分成两部分:处理单元(processing unit)和虚拟中间件(virtualized middleware)。

  1. 处理单元:实现业务逻辑
  2. 虚拟中间件:负责通信、保持sessions、数据复制、分布式处理、处理单元的部署。

描述框架的架构 如何描述架构模式?_处理单元_14

虚拟中间件又包含四个组件:

  1. 消息中间件(Messaging Grid):管理用户请求和session,当一个请求进来以后,决定分配给哪一个处理单元。
  2. 数据中间件(Data Grid):将数据复制到每一个处理单元,即数据同步。保证某个处理单元都得到同样的数据。
  3. 处理中间件(Processing Grid):可选,如果一个请求涉及不同类型的处理单元,该中间件负责协调处理单元
  4. 部署中间件(Deployment Manager):负责处理单元的启动和关闭,监控负载和响应时间,当负载增加,就新启动处理单元,负载减少,就关闭处理单元。

   除了上述12种架构模式外,还有SOA架构模式、微服务架构模式等。