0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

10种常见的架构模式

xCb1_yikoulinux 来源:一口Linux 作者:一口Linux 2022-07-11 14:12 次阅读

想知道如何设计大型企业级的系统吗?在开始主要的代码开发之前,我们必须选择一种合适的体系架构,它将为我们提供所需的功能和质量属性。因此,在将它们应用到我们的设计之前,应该先了解不同的体系结构。

f81b6664-00cd-11ed-ba43-dac502259ad0.png

- 什么是架构模式 -

根据维基百科,

架构模式是在给定上下文中解决软件架构中常见问题的通用、可重用的解决方案。架构模式类似于软件设计模式,但范围更广。

在本文中,我会简单介绍下列10种常见的架构模式,及其用途、优势和劣势。

- 分层模式 -

该模式可用于构建可分解为子任务组的程序,其中每个都处于特定的抽象级别。每一次都向更高层提供服务。一般信息系统中最常见的4层划分如下:

  • Presentation layer表示层(也就是UI层)

  • Application layer应用层(也就是服务层)

  • Business logic layer业务逻辑层(也就是领域层)

  • Data access layer数据访问层(也就是数据持久层)

应用

  • 一般桌面应用程序

  • 电子商务Web应用程序

f84da9d0-00cd-11ed-ba43-dac502259ad0.jpg

- 客户端-服务器模式 -

该模式由两部分组成:一个服务端和多个客户端,服务器向多个客户端提供服务。客户端向服务器发起请求,服务器向这些客户端提供相关服务,之后,服务器继续侦听客户端的请求。

应用

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

f870e9f4-00cd-11ed-ba43-dac502259ad0.jpg

- 主从模式 -

该模式也分为两块:主模块和从模块。主模块在相同的从模块之间分配工作,并根据从模块返回的结构来计算最终的结果。

应用

  • 在数据库复制中,主数据库被视作权威数据源,而从数据库与其保持同步

  • 连接到计算机系统总线上的外围设备(主驱动器和从驱动器)

f88e5aac-00cd-11ed-ba43-dac502259ad0.jpg

- 管道过滤模式 -

此模式可用于构建产生和处理数据流的系统。每个处理步骤都包含在一个过滤器组件中,要处理的数据通过管道传递。这些管道可用于缓冲或者同步。

应用

  • 编译器。依次使用不同的过滤器执行词法分析、解析、语法分析和代码生成

  • 生物信息学中的工作流程

f8b327ec-00cd-11ed-ba43-dac502259ad0.png

- Broker模式 -

此模式是使用解耦的组件构建分布式系统,这些组件可以通过远程服务调用实现交互。代理组件负责协调组件之间的通信。服务器将它们的功能(服务和特征等)发布到代理,客户端向代理请求服务,然后代理根据其注册表将客户端请求转发给合适的服务。

应用

  • 消息代理软件,如 Apache ActiveMQ, Apache Kafka, RabbitMQ 和 JBoss Messaging.

f8ccb914-00cd-11ed-ba43-dac502259ad0.png

- P2P模式 -

在此模式中,每个独立的组件被称为对等点(或对等端,peer)。对等端既可以充当客户端(向其它对等端请求服务),又可以充当服务器(向其它对等方提供服务)。同一个对等端可能既是客户端,又是服务器,并且可以动态改变其角色。

应用

f8e9e4f8-00cd-11ed-ba43-dac502259ad0.jpg

- 事物总线模式 -

该模式主要处理组件,有4个重要的组件:事件源、事件侦听器、通道和事件总线。事件源将消息发送到事件总线上的特定通道,侦听器会订阅特定的频道。当消息发送到频道中后,订阅该频道的侦听器会收到该消息的通知。

应用

  • 安卓开发

  • 通知服务

f90e8948-00cd-11ed-ba43-dac502259ad0.png

- MVC模式 -

该模式将交互式应用分为三个部分,

  1. 模型——包含核心功能和数据

  2. 视图——向用户显示信息(可以定义多个视图)

  3. 控制器——处理用户的输入

这样做是为了将数据的内部表示与用户输入和向用户展示的形式分离开来,这样可以解耦组件,同时也可以进行高效的代码重用。

应用

  • 主流编程语言的互联网应用架构

  • 网络框架,如DjangoRails.

f926c030-00cd-11ed-ba43-dac502259ad0.png

- 黑板模式 -

此模式对于尚无确定性解决方案的问题很有用,黑板模式由三部分组成:

  • 黑板—— 一个结构化的全局内存,包含解决方案领域的对象

  • 知识源——具有自身含义的专业模块

  • 控制组件——选择、配置和执行模块

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

应用

f940b6e8-00cd-11ed-ba43-dac502259ad0.png

- 解释器模式 -

此模式通常用于设计组件来解释使用专用语言写出的程序,它主要指定如何估算程序行,即以特定语言编写的语句或表达式。基本思想是为每种语言符号都设计一个类。

应用

  • 数据库查询语言,如SQL

  • 用于描述通信协议的语言

f95d2bde-00cd-11ed-ba43-dac502259ad0.png

- 架构模式对比 -

模式

优点

缺点

分层模式

一个底层服务可以被不同的高层服务使用;分层结果更容易进行标准化,因为可以清晰地定义每个层级层级内的修改不会影响其它层

不是普适性的架构;某些场景下,需要跳过其中一些分层

CS模式

容易对系列服务进行建模,供客户端请求

请求通常是在服务器的不同线程中进行响应的;因为不同客户端有不同形式,进程间通信会造成很大负载

主从模式

准确性——服务的执行委托给了不同的从模块

从模块是独立的:没有共享状态;主从模块间的通信延迟可能是一个问题,尤其在实时系统中。

管道过滤器模式

支持并发处理,其中输入、输出由数据流组成时,过滤器在接收到数据时即开始计算;容易添加过滤器,系统很容易扩展;过滤器可重用,可以通过重新组合已有的过滤器来创建不同的管道流。

整体效率受最慢的过滤程序限制;从一个过滤器传递到另一个时,存在数据转换的负载

代理模式

允许对象进行动态的修改、增、删、重定位,对开发者来说内容分发是透明的

需要对服务描述进行标准化

P2P模式

支持去中心化运算;对任意节点的失败都有高度稳定性;在资源和计算能力方面具有高度可伸缩性

无法保证服务质量,因为节点之间是自愿合作的;很难保证安全;性能取决于节点的数量

事件总线模式

很容易向系统好加入新的发布者、订阅者和连接;对于高度分布式应用很有效

伸缩性可能是个难题,因为所有的信息传输都要通过相同的时间总线

MVC模式

对同一模型很容易构建多个视图,在运行时可以任意连接或断开

增加了复杂性,用户操作可能导致很多不必要的更新

黑板模式

容易添加新应用;很容易扩展数据空间中的结构

修改数据空间的结构很难,因为所有的应用都会被影响;可能需要同步机制和访问控制

解释器模式

可能支持高度动态化行为;有利于终端用户的可编程性;增强了灵活性,因为替换一个解释程序很容易

因为解释型语言通常比编译型语言要慢,因此性能可能是一个问题

end


审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 架构
    +关注

    关注

    1

    文章

    509

    浏览量

    25444
  • 模式
    +关注

    关注

    0

    文章

    65

    浏览量

    13373
  • 信息系统
    +关注

    关注

    0

    文章

    202

    浏览量

    20419
收藏 人收藏

    评论

    相关推荐

    架构与设计 常见微服务分层架构的区别和落地实践

    前言 从强调内外隔离的六边形架构,逐渐发展衍生出的层层递进、注重领域模型的洋葱架构,再到和DDD完美契合的整洁架构架构风格的不断演进,其实就是为了适应软件需求越来越复杂的特点。 可以
    的头像 发表于 10-22 15:34 146次阅读
    <b class='flag-5'>架构</b>与设计 <b class='flag-5'>常见</b>微服务分层<b class='flag-5'>架构</b>的区别和落地实践

    噪声传导的两模式

    噪声传导有两模式,一为差模传导,一为共模传导。
    的头像 发表于 10-15 11:33 226次阅读
    噪声传导的两<b class='flag-5'>种</b><b class='flag-5'>模式</b>

    常见的电动两轮车BMS架构应用说明

    电子发烧友网站提供《常见的电动两轮车BMS架构应用说明.pdf》资料免费下载
    发表于 09-12 09:28 0次下载
    <b class='flag-5'>常见</b>的电动两轮车BMS<b class='flag-5'>架构</b>应用说明

    vim的三工作模式有哪些

    Vim是一个功能强大的文本编辑器,它具有三工作模式:普通模式、插入模式和命令行模式。以下是对这三
    的头像 发表于 08-30 14:52 618次阅读

    vim的三工作模式是什么?如何切换

    Vim是一款功能强大的文本编辑器,它具有多种工作模式,以满足不同用户的需求。在Vim中,主要有三工作模式:普通模式、插入模式和命令行
    的头像 发表于 08-30 14:50 2300次阅读

    RISC-­V架构的目标和特点

    RISC-­V架构的目标 RISC-­V架构的目标如下 成为一完全开放的指令集,可以被任何学术机构或商业组织所自由使用 成为一真正适合硬件实现且稳定的标准指令集 RISC-­V
    发表于 08-23 00:42

    伺服电机位置模式和速度模式的区别

    伺服电机作为现代工业自动化领域中的核心动力装置,其控制模式的选择对于整个系统的性能有着至关重要的影响。在伺服电机的控制模式中,位置模式和速度模式是最为
    的头像 发表于 06-05 15:02 3004次阅读

    快速搞懂GPIO控制器的六模式

    的六常见模式,我们特地整理了这篇文章。。快速搞懂GPIO控制器的六模式我们拿STM32芯片举例,下图是GPIO控制器的简单框图:通过框图
    的头像 发表于 05-18 08:04 1378次阅读
    快速搞懂GPIO控制器的六<b class='flag-5'>种</b><b class='flag-5'>模式</b>

    实践GoF的23设计模式:解释器模式

    解释器模式(Interpreter Pattern)应该是 GoF 的 23 设计模式中使用频率最少的一了,它的应用场景较为局限。
    的头像 发表于 04-01 11:01 624次阅读
    实践GoF的23<b class='flag-5'>种</b>设计<b class='flag-5'>模式</b>:解释器<b class='flag-5'>模式</b>

    LoRaWAN网络架构及三工作模式

    LoRaWAN(Long Range Wide Area Network,长距离广域网)是由LoRa联盟推出的一低功耗广域网标准,它定义了网络的通讯协议和系统架构。LoRaWAN技术为电池供电的无线设备提供了局域、全国乃至全球的网络连接。
    的头像 发表于 03-05 15:59 2353次阅读

    浅析电子负载常见的的四工作模式

    浅析电子负载常见的的四工作模式 电子负载是电子设备的一,用于模拟负载并测试电源的性能。它在电子行业和电力领域有广泛的应用。电子负载常见
    的头像 发表于 01-22 13:43 2271次阅读

    示波器的三触发模式

    示波器的触发模式有自动模式(Auto)、正常模式(Norm)和单次模式(Single)三。在测不同信号时,采用不同的触发
    的头像 发表于 01-18 08:12 2432次阅读
    示波器的三<b class='flag-5'>种</b>触发<b class='flag-5'>模式</b>

    什么是分布式架构?

    分布式架构是指将一个系统或应用拆分成多个独立的节点,这些节点通过网络连接进行通信和协作,以实现共同完成任务的一架构模式。这种架构模式旨在提高系统的可扩展性、可靠性和性能表现。 一、分
    的头像 发表于 01-12 15:04 1157次阅读
    什么是分布式<b class='flag-5'>架构</b>?

    AD7626手册上是10M转换速率,是只有这一工作模式吗?

    1、AD7626手册上是10M转换速率,是只有这一工作模式吗? 2、尝试用fpga实现数据采集接口,采取回波模式,预设一次转换200ns,clk输出100M 16个时钟脉冲,检测D
    发表于 12-15 07:15

    weblogic正式服务属于什么模式

    网络进行通信的架构模式。它可以提高系统的可扩展性、可靠性和处理能力,以满足不同的业务需求。 WebLogic作为一个开发和部署Java应用程序的平台,提供了一套完整的工具和功能,使开发人员能够方便地开发、部署和管理分布式应用程序。以下将从WebLogic的特点、
    的头像 发表于 12-05 15:01 456次阅读