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

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

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


什么是架构模式


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


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

1. 分层模式


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


使用场景


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



2. 客户端-服务器模式


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


使用场景


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



3. 主-从模式


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


使用场景


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



4. 管道过滤器模式


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


使用场景


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


5. 代理模式


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


使用场景


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


6. 点对点模式


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


使用场景


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


7. 事件总线模式


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


使用场景


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



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


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


使用场景


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


9. 黑板模式


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


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


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


使用场景


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

10. 解析器模式


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


使用场景


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

相关文章
|
5天前
|
缓存 负载均衡 JavaScript
探索微服务架构下的API网关模式
【10月更文挑战第37天】在微服务架构的海洋中,API网关犹如一座灯塔,指引着服务的航向。它不仅是客户端请求的集散地,更是后端微服务的守门人。本文将深入探讨API网关的设计哲学、核心功能以及它在微服务生态中扮演的角色,同时通过实际代码示例,揭示如何实现一个高效、可靠的API网关。
|
1月前
|
分布式计算 Kubernetes Hadoop
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
148 6
|
1月前
|
缓存 监控 API
探索微服务架构中的API网关模式
【10月更文挑战第5天】随着微服务架构的兴起,企业纷纷采用这一模式构建复杂应用。在这种架构下,应用被拆分成若干小型、独立的服务,每个服务围绕特定业务功能构建并通过HTTP协议协作。随着服务数量增加,统一管理这些服务间的交互变得至关重要。API网关作为微服务架构的关键组件,承担起路由请求、聚合数据、处理认证与授权等功能。本文通过一个在线零售平台的具体案例,探讨API网关的优势及其实现细节,展示其在简化客户端集成、提升安全性和性能方面的关键作用。
72 2
|
1月前
|
分布式计算 资源调度 Hadoop
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
64 2
|
1月前
|
存储 缓存 监控
探索微服务架构中的API网关模式
【10月更文挑战第1天】探索微服务架构中的API网关模式
92 2
|
13天前
|
缓存 监控 API
探索微服务架构中的API网关模式
随着微服务架构的兴起,API网关成为管理和服务间交互的关键组件。本文通过在线零售公司的案例,探讨了API网关在路由管理、认证授权、限流缓存、日志监控和协议转换等方面的优势,并详细介绍了使用Kong实现API网关的具体步骤。
34 3
|
13天前
|
存储 缓存 监控
探索微服务架构中的API网关模式
探索微服务架构中的API网关模式
32 2
|
2月前
|
JSON 监控 安全
探索微服务架构中的API网关模式
【9月更文挑战第22天】在微服务架构的海洋中,API网关如同一位智慧的守门人,不仅管理着服务的进出,还维护着整个系统的秩序。本文将带你一探究竟,看看这位守门人是如何工作的,以及它为何成为现代云原生应用不可或缺的一部分。从流量控制到安全防护,再到服务聚合,我们将一起解锁API网关的秘密。
|
3月前
|
分布式计算 负载均衡 API
微服务架构设计原则与模式
【8月更文第29天】随着云计算和分布式计算的发展,微服务架构已成为构建大型复杂应用的一种流行方式。这种架构模式将单个应用程序分解成一组小型、独立的服务,每个服务运行在其自己的进程中,并通过轻量级机制(通常是HTTP资源API)进行通信。本文将探讨微服务架构的基本设计原则、常用模式以及如何有效地划分服务边界。
324 3
|
3月前
|
弹性计算 Kubernetes Serverless
Kubernetes 的架构问题之Serverless Container中不支持特权模式的问题如何解决
Kubernetes 的架构问题之Serverless Container中不支持特权模式的问题如何解决
90 6