10种常见的软件架构模式简述

209 阅读6分钟

有没有想过,大型企业规模的系统是如何设计的?在主要的软件开发开始之前,我们必须选择一个合适的架构,为我们提供理想的功能和质量属性。因此,我们应该了解不同的架构,然后再将其应用于我们的设计。

什么是架构模式

架构模式是一种基于结构和行为的软件设计模式,它把应用程序的核心功能抽象出来,然后将功能分配给不同的组件,以实现更大规模的软件系统。它还提供了一个框架,可以让开发人员对系统进行优化,提高可维护性和可扩展性。本文将介绍一些最常见的软件架构模式,包括客户服务器架构、管道和过滤器架构、微服务架构和分布式系统架构等。

  1. 分层模式
  2. 客户端-服务器模式
  3. 主-从模式
  4. 管道过滤器模式
  5. 代理模式
  6. 点对点模式
  7. 事件总线模式
  8. 模型-视图-控制器模式(MVC)
  9. 黑板模式
  10. 解析器模式

1. 分层模式

分层模式是一种常用的架构模式,它将系统分为三层:表示层、应用程序层和数据存储层。它允许不同的层之间相互独立,只需要定义一个接口,从而实现高内聚和低耦合。这种架构模式也可以帮助我们更轻松地更新应用程序,而不用改变整个系统。

使用场景

  • 一般的桌面应用。
  • 电子商务网络应用。

2. 客户端-服务器模式

客户端-服务器模式是一种非常常见的架构模式,它将系统分为客户端和服务器两部分。客户端负责处理用户的请求,而服务器则负责实际的数据处理,并将处理结果返回给客户端。这种模式可以有效地分离客户端和服务器,使系统更加可维护和可扩展。

使用场景

  • 在线应用,如电子邮件、文件共享和银行业务。

https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/42e1c94aa1da40e08cf92d9caa5c6dd1~tplv-k3u1fbpfcp-zoom-1.image

3. 主-从模式

主-从模式是一种分布式架构模式,它将系统分为一个主节点和多个从节点,从节点可以被分配到不同的机器上,以便更好地满足用户的需求。主节点负责管理系统,而从节点则负责处理实际的任务。这种架构模式可以提高系统的性能和可用性,同时还能提供高可靠性。

使用场景

  • 在数据库复制中,主数据库被视为权威源,而从属数据库则与之同步。
  • 在计算机系统中连接到总线上的外围设备(主、从属驱动器)。

https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/85ee786489804e4ca56733b73ee3791e~tplv-k3u1fbpfcp-zoom-1.image

4. 管道过滤器模式

管道过滤器模式是一种常见的架构模式,它将一个系统分为多个过滤器,每个过滤器都可以进行特定的功能处理。它可以实现多个功能的分离,从而让系统更容易维护和扩展。此外,它还可以提高系统的性能,因为不同的过滤器可以并行运行,从而减少处理时间。这些管道可用于缓冲或同步目的。

使用场景

  • 编译器。连续的过滤器进行词法分析、解析、语义分析和代码生成。
  • 生物信息学中的工作流程。

https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2ed23206ee0247978c0d827ee1709a74~tplv-k3u1fbpfcp-zoom-1.image

5. 代理模式

代理模式是一种常见的架构模式,它把一个客户端和一个服务器隔离开来,使得客户端不能直接访问服务器,而是通过代理服务器进行访问。这种架构模式可以提高系统的安全性,同时还可以进行负载均衡以提高系统的性能。

使用场景

  • 网络应用,如远程打印服务或文件共享服务。
  • 安全应用,如虚拟私有网络(VPN)。
  • 消息队列组件:kafka、rabbitmq

https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a6e4432abaa442148639517a4db81f2d~tplv-k3u1fbpfcp-zoom-1.image

6. 点对点模式

点对点模式是一种常见的架构模式,它将不同的客户端和服务器连接起来,使客户端可以直接与服务器进行通信,而不需要中间服务器作为中介。这种架构模式可以提高系统的性能,同时还可以改善系统的可用性和可扩展性。

使用场景

  • 对等网络,如BitTorrent。
  • P2P文件共享系统,如Napster和Gnutella。

https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c945de5d7cbb4adb83e2f8d9f5997531~tplv-k3u1fbpfcp-zoom-1.image

7. 事件总线模式

事件总线模式是一种常见的架构模式,它可以帮助我们实现解耦,使不同组件之间的通信更加简单和高效。它的工作原理是,当组件发生变化时,它会发出一个事件,其他组件可以订阅这个事件,然后根据自己的需要做出相应的处理。这种架构模式可以有效地改善系统的可维护性和可扩展性。

使用场景

  • 在组件之间传递消息时,如消息总线或事件总线。
  • 在异步编程中,如消息队列或其他类型的通信机制。

https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/993857fc62d64e459f5c84e997dacc2b~tplv-k3u1fbpfcp-zoom-1.image

8. 模型-视图-控制器模式(MVC)

模型-视图-控制器(MVC)模式是一种常见的架构模式,它将系统分为三个部分:模型、视图和控制器。模型表示系统的状态,视图负责呈现系统的内容,而控制器负责处理用户的输入,并将其映射到模型和视图上。这种架构模式可以有效地分离各个组件,从而使系统更加可维护和可扩展。

使用场景

  • Web应用,如网站和社交网络应用。
  • 桌面应用,如文字处理器和图像编辑器。

https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/50209c00b4d14e5fb4f188b13b099730~tplv-k3u1fbpfcp-zoom-1.image

9. 黑板模式

这种模式对那些不知道确定性解决策略的问题很有用。黑板模式由3个主要部分组成。

  • 黑板(blackboard) – 用于存储解空间对象的结构化全局内存
  • **知识(knowledge)**源 – 能自表意的专用模块
  • **控制(control)**组件 – 选择、配置与执行的模块

所有的组件均能访问黑板,组件可将新生成的数据对象写入黑板,也可以通过模式匹配从黑板中获取知识源所生成的特定数据。

使用场景

  • 语音识别
  • 车辆识别和追踪
  • 蛋白质的结构鉴定
  • 声纳信号解析

https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/562be282d7694166b57eda2cb23fd400~tplv-k3u1fbpfcp-zoom-1.image

10. 解析器模式

解析器模式是一种常见的架构模式,它用于将一组输入转换为有用的输出。它可以用于处理结构化数据,如XML、JSON、HTML等,并将其转换为可以处理的格式,从而使系统更容易维护和扩展。此外,它还可以用于编译器的编写,以及在编译时执行特定任务。

使用场景

  • XML解析器。
  • JSON解析器。
  • HTML解析器。
  • 编译器编写。