架构师最常使用的5种架构模式及其适用场景分析(入门级)

典型软件系统架构视图的使用场景及图例 本文主要总结了软件系统中常见的六种架构视图类型,以及它们在软件开发和系统设计中的使用范围。这些视图类型包括逻辑视图、运行视图、数据视图、开发视图、部署视图和场景视图。逻辑视图关注于系统的组件拆分、功能职责、输入输出和依赖关系的描述。它在需求分析和系统设计阶段起到指导作用,帮助开发团队确定系统的模块划分和组件之间的关系。运行视图描述了系统中各组件之间的协作方式,并通过运行时序图展示主要功能的执行顺序。它对于理解系统的运行行为、优化性能和排查问题非常重要。 阅读详情

好莱坞电影中有多少情节?一些电影评论家说只有五个。您可以采用几种架构来实现应用程序?目前大多数程序都使用下面提到的五种架构之一。

在本文中,我将五种软件架构模式的优缺点以及适合场景提炼出来作为快速参考。你可以在单个系统中使用多个架构模式,它们的组合既是计算机科学,也是一门艺术。

一、分层架构

这种方法可能是最常见的方法,因为它通常围绕数据库构建,并且业务中的许多应用程序自然会倾向于将信息存储在RDBMS的表中。许多比较大的软件框架(例如Java EE,Drupal和Express)都是在这种架构下实现的,因此使用它们构建的许多应用程序自然都来自分层体系结构。

 

Model-View-Controller(MVC)分层结构是大多数流行的Web框架提供的标准软件开发方法,显然是分层体系结构。数据持久层上方是服务层,它通常包含业务逻辑和有关数据库中数据类型的信息。视图层位于顶层,通常是CSS,JavaScript和带有动态嵌入式代码的HTML。在中间有一个控制层,该控制层具有用于转换在视图和模型之间移动的数据的各种规则和方法。

分层架构的优点:每个层可以只集中于自己的功能实现。这使得应用程序:

  • 容易维护

  • 容易单元测试

  • 易于分配单独的“角色”

  • 易于更新和扩展

适当的分层体系结构将开发层面进行隔离,这些层不受其他层的更改的影响,从而使重构更加容易。划分任务并定义单独的层是架构师面临的挑战。当需求很好地适应了模式时,这些层将易于解耦或分层开发。

适合:

  • 需要快速构建的新应用程序

  • 传统IT部门和流程的企业或业务应用程序

  • 具有尚不了解其他架构的经验不足的开发人员的团队

  • 需要严格的可维护性和可测试性标准的应用

二、事件驱动架构

事件驱动的体系架构根据数据生成一个“事件”,事件由“消息中间件”或“事件分发管理的中央单元”统一接收,并将事件分配特定类型的代码处理。

使用JavaScript编程网页涉及编写对诸如鼠标单击或击键之类的事件做出反应的小模块。浏览器本身会协调所有输入,并确保只有正确的代码才能得到正确的事件。浏览器中常见许多不同类型的事件,但是模块仅与相关的事件进行交互。这与分层体系结构非常不同,在分层体系结构中,所有数据通常都将穿过所有层。总体而言,事件驱动的体系结构:

  • 容易适应复杂,混乱的业务环境

  • 当出现新的事件类型时,很容易扩展

注意事项:

  • 如果模块之间可以相互影响,则[测试可能会很复杂

  • 当模块发生故障时,中央单元(或消息中间件)必须有一个事件备份计划。

  • 消息传递开销可能会降低处理速度,消息中间件必须缓冲以突发形式到达的消息时。

  • 当事件有非常不同的需求时,为事件开发数据结构可能会很复杂。

  • 维护基于事务的一致性机制很困难,因为接收事件的模块是解耦和独立的。

适合:

  • 具有异步数据流的异步系统

  • 各个数据块仅与多模块中的少数模块交互的应用程序

  • 用户界面

三、微内核-多插件架构

许多的应用程序都具有一组核心代码,这些代码在不同的模块下反复使用。例如,开发工具Eclipse将打开文件,批注,编辑文件并启动后台处理器。用于显示文件和对其进行编辑的代码是微内核的一部分。其他的插件扩展了Eclipse,从而扩展了其功能。

具体到解决方案就是将一些基本的核心的任务代码推入微内核。然后,不同的业务部门可以根据不同类型的声明编写插件。

注意事项:

  • 确定哪些代码是微内核中的内容通常是一门艺术。它应该保留经常被使用的代码。

  • 一旦许多插件依赖微内核,修改微内核可能非常困难,甚至不可能。唯一的解决方案就是修改插件。

  • 为内核函数选择正确的粒度很难事先完成,也几乎不可能在后期进行更改。

适合:

  • 工具类软件

  • 在核心代码与边缘代码之间有清晰区分的应用程序

  • 具有一组固定的核心函数和一组动态规则的应用程序

四、微服务架构

小宝宝既可爱又有趣,但是一旦变大,就很难操纵并且难以维护。微服务架构旨在帮助开发人员避免让自己的宝宝长大,笨拙,僵硬,烦人。它的目标不是创建一个大型程序,而是创建多个不同的小型程序。避免修改一个小bug,就需要重新部署整个大型应用的情况出现。

这种方法类似于事件驱动和微内核方法,但是主要用于解耦不同模块及任务。在许多情况下,不同的任务可能需要不同的处理量,并且用途可能会有所不同。所以微服务的特点是便于修改、便于扩展。使用负载均衡及服务发现的机制,在用户使用高峰期部署更多的微服务,保证服务的高可用;在用户低频服务时段缩减微服务,从而节省服务器资源。

注意事项:

  • 并非所有应用程序都可以拆分为相对独立的微服务单元。

  • 当任务分散在不同的微服务之间时,通信成本会更大。单个请求的响应时长会增加。

适合:

  • 快速发展新业务团队

  • 大型Web应用程序

五、高速缓存架构

许多网站都是围绕数据库构建的,只要数据库能够满足负载,它们就可以正常运行。但是当使用量达到顶峰,并且数据库无法跟上用户请求的速度时,整个网站就会瘫痪。将数据存储在内存中可以使许多工作更快,从而大幅度提高用户并发访问的支撑能力。

注意事项:

  • 对于内存数据库,事务的支持更加困难。

  • 开发专业的高速缓存数据的程序,对程序员的技术水平往往要求更高一些(至少比只会写增删改查的程序员要高)

适合:

  • 高频点击数据流和用户日志之类的大量数据处理

  • 低价值数据,有时可能会丢失而不会造成重大后果(比如用户访问量数据)

  • 读多写少的数据。比如新闻数据,写完之后几乎不改,但是有很多的人看。

干货:AI应用架构师总结品牌价值量化的5个经典算法,附实现代码 品牌价值不是“logo的设计费”,也不是“广告投入总和”,而是品牌为企业带来的“超额收益”——即“有品牌时的利润”减去“没有品牌时的利润”。财务价值:品牌带来的额外收入/利润(比如品牌溢价);消费者价值:消费者对品牌的认知、偏好、忠诚(比如愿意为品牌多付20%价格);市场价值:品牌在市场中的竞争力(比如市场份额、渠道话语权)。"""计算品牌收益:param revenue: 品牌产品总收入(元):param var_cost: 变动成本(元) 阅读详情

相关推荐

MapReduce 与 Spark 3.5 核心算子对比:WordCount 案例的 5 倍性能差异与适用场景分析

本文对比了MapReduce与Spark 3.5在WordCount案例中的性能差异与适用场景,揭示了Spark 3.5在内存计算、DAG调度等方面的5倍性能优势。通过实测数据和核心算子分析,为数据工程师提供了技术选型和优化建议,帮助提升大数据处理效率。

weixin_30613343的博客 427

超实用5种架构模式及其适用场景分析

好莱坞电影中有多少情节?一些电影评论家说只有五个。您可以采用几种架构来实现应用程序?目前大多数程序都使用下面提到的五种架构之一。 在本文中,我将五种软件架构模式的优缺点以及适合场景提炼出来作为快速参考。你可以在单个系统中使用多个架构模式,它们的组合既是计算机科学,也是一门艺术。 一、分层架构 这种方法可能是最常见的方法,因为它通常围绕数据库构建,并且业务中的许多应用程序自然会倾向于将信息存储在RDBMS的表中。许多比较大的软件框架(例如Java EE,Drupal和Express)都是在这种架构下实现

weixin_48892816的博客 681

Java 架构师系列:LangChain 是否适合开发 AI Agent?

在讨论 LangChain 的适用性前,先澄清 AI Agent 的概念。AI Agent 是一种自主智能系统,能感知环境、推理决策并执行行动,而非简单响应查询。它通常基于大型语言模型(LLM)如 GPT-4o 或 Claude,但添加了工具集成、记忆和多步推理能力。核心特性自主性:能独立规划任务,如“搜索天气,然后生成报告”。工具使用:调用外部 API、数据库或浏览器。记忆与上下文:保留历史交互,实现多轮对话。类型。

xinzhiyishi的博客 924

软件架构模式及应用场景

之前我曾经有一篇文章《从实践者的角度看软件架构的历史》,主要从宏观的角度、从工业界和学术界对软件架构研究课题的对比来阐述了25年来软件架构的历史变迁和未来趋势。 之后,我又在想,有没有总结软件应用架构发展方面的报告呢,最好是能阐述主流的应用架构及其适用场景,这样架构师们在做架构设计时,可以多多参考。你还别说,我真找到了《Software architecture patterns》,五十多页的P...

技术人成长 - 聊技术,话成长 1614

解读软件架构的复杂性:业务和技术的双重挑战

本文探讨了软件架构中的复杂性及其对业务成功的影响。随着技术和业务环境的快速变化,架构师面临着管理日益增加的复杂性挑战。文章分析了影响架构复杂性的关键因素,如技术选择、团队协作和需求变更,并提出了一系列应对策略,包括明确的架构决策流程和持续的架构评估。通过强调沟通与合作,架构师可以更有效地应对复杂性,从而为企业创造持久的价值。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 6万+

提示工程事件驱动架构开源方案:架构师推荐的5个优秀开源项目

本文将从架构师视角,深度剖析5个经过工业级验证的事件驱动架构开源项目。我们不仅会介绍它们的核心特性、架构设计,还会结合实际场景分析适用范围、优缺点,并提供“拿来即用”的快速上手示例。无论你是正在设计新系统的架构师,还是想优化现有系统的工程师,都能在这里找到清晰的选型思路。Apache Kafka 由 LinkedIn 于 2011 年开源,最初用于解决“多数据中心日志同步”问题,如今已成为事件流处理领域的事实标准。

AI开发架构师 1090

架构师最常使用的5种架构模式及其适用场景分析

好莱坞电影中有多少情节?一些电影评论家说只有五个。您可以采用几种架构来实现应用程序?目前大多数程序都使用下面提到的五种架构之一。 在本文中,我将五种软件架构模式的优缺点以及适合场景提炼出来作为快速参考。你可以在单个系统中使用多个架构模式,它们的组合既是计算机科学,也是一门艺术。 一、分层架构 这种方法可能是最常见的方法,因为它通常围绕数据库构建,并且业务中的许多应用程序自然会倾向于将信息存储在RDBMS的表中。许多比较大的软件框架(例如Java EE,Drupal和Express)都是在这种架构下实现的,因

字母哥博客 1675

资深提示工程架构师:用户参与研究的5个误区,让你提示设计白做

想象一下,你是一位提示工程架构师,精心设计了一系列提示,满心期待用户能够与你的系统进行高效且富有成效的交互。你投入了大量的时间和精力,从理解业务需求到打磨每一个提示的措辞。然而,当你满心欢喜地收集用户反馈时,却发现实际效果与预期相差甚远。用户要么对提示感到困惑,要么给出的反馈毫无价值,导致你的提示设计仿佛做了无用功。这是怎么回事呢?其实,在用户参与研究的过程中,存在着一些容易被忽视的误区,而这些误区可能正是让你的提示设计功亏一篑的罪魁祸首。

AI 算法实战派 821

你该知道的架构师最常使用的5种架构模式及其适用场景分析

好莱坞电影中有多少情节?一些电影评论家说只有五个。您可以采用几种架构来实现应用程序?目前大多数程序都使用下面提到的五种架构之一。 在本文中,我将五种软件架构模式的优缺点以及适合场景提炼出来作为快速参考。你可以在单个系统中使用多个架构模式,它们的组合既是计算机科学,也是一门艺术。 一、分层架构 这种方法可能是最常见的方法,因为它通常围绕数据库构建,并且业务中的许多应用程序自然会倾向于将信息存储在RDBMS的表中。许多比较大的软件框架(例如Java EE,Drupal和Express)都是在这种架构下实现的,因

weixin_48892608的博客 267

使用sysbench对Oracle做基准测试(-) 安装篇

sysbench是一款开源的多线程性能测试工具, 可以执行CPU/内存/线程/IO/数据库等方面的性能测试。数据库目前支持MySQL/Oracle/PostgreSQL。

道行尚浅(老道)的博客 7811

从零到一:用CubeMX和485模块快速上手多摩川绝对式编码器(附清零操作详解)

本文详细介绍了如何使用STM32CubeMX和485模块快速上手多摩川绝对式编码器,包括硬件连接、STM32配置、协议解析及清零操作。通过具体的代码示例和调试技巧,帮助开发者高效实现编码器数据读取和清零功能,特别适合STM32单片机开发者参考。

weixin_30599769的博客 193

系统架构-设计模式及架构模式(干货)

今天早上我把之前已经梳理完的关于系统架构方面的内容整理发布上来。这次主要分享一下在架构设计过程中涉及的基础知识,主要是涵盖系统架构方法、架构模式及设计模式,便于大家在后续一起探讨HRMS系统的SaaS模式的架构设计。 一、设计模式        大家或多或少的都接触并在实际的开发过程中无形中可能都使用了某种设计模式,可能我们并不知道具体的模式叫什么名字,现在讲设计模式的书、案例分享都有很多,管...

何戈洲的专栏 1万+

学习笔记( 11 ) - 解决:finalshell连接虚拟机(ubuntu)超时,主机ping不通虚拟机,主机没有VMnet8网卡, Connection refused: connect

解决:finalshell连接虚拟机(ubuntu)超时,主机ping不通虚拟机,主机没有VMnet8网卡, Connection refused: connect

烟溪彭于晏的博客 2万+

【系统架构师】-选择题(五)

具体来说,服务端程序应该在包装器外观的实例上调用需要的方法,然后将请求和请求的参数发送给操作系统API函数,调用成功后将结果返回。3、ATAM是在基于场景的架构分析方法(Scenarios-based Architecture Analysis Method,SAAM)基础之上发展起来的,主要包括。为了拓展业务范围,需要将现有的业务功能进行多种组合,形成新的业务功能。1、某公司拟开发一个轿车巡航定速系统,系统需要持续测量车辆当前的实时速度,并根据设定的期望速度自动控制轿车的油门和刹车。)架构风格最为合适。

宣晨光 691

魔百和CM211-1刷Armbian全流程:从安卓盒子到Linux服务器的完美变身

本文详细介绍了如何将魔百和CM211-1机顶盒刷入Armbian系统,实现从安卓盒子到Linux服务器的完美变身。涵盖硬件兼容性验证、固件选择、刷机流程、系统优化及常见问题解决,特别适合技术爱好者低成本搭建家庭NAS或开发环境。

weixin_30329623的博客 243

LMI线性矩阵不等式之非线性变量处理

​ 如果一个LMI线性矩阵不等式中的某项存在两个矩阵变量相乘,那么称该类情形为非线性矩阵不等式,而要直接求解时很困难的,而且LMI工具箱也无法求解非线性矩阵,所以需要通过变量替换法进行处理。 ​...

Mr.邹的博客 4552

架构师备考的一些思考(四)

前言 对于数学,我们之前学的是对的,但不是真的,所以我们没有数学思维。 对于计算机,我们学校教的是对的,但不是真的,所以仅仅从学校学习知识的应届毕业生,不论985,211,本科,专科都一样,都是一张白纸,啥也不会。 案例分析 案例分析是5选3,第一题必答。 问题一的类型 架构风格对比 问题二的类型 质量属性填写 问题三的类型 ER图分析 问题类型四 场景分析,此类型题比较多。 案例分析主要是结...

kiba518的博客 1192

出现 RuntimeError: adaptive_avg_pool2d_backward_cuda does not have a deterministic implementation的解决方法

大致就是在执行主函数的训练函数中,在反向传播这一块出现了问题。解决方法就是添加如下代码块。找到提示bug的行数。

码农研究僧的博客 5534

Java进阶之路——从初级程序员到架构师,从小工到专家

文章首发在我的微信公众号:Java北京(java_bj),欢迎关注。 怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序员也是工作三五年之后开始迷茫的老程序员经常会问到的问题。希望这篇文章会是你看到过的最全面最权威的回答。 一: 编程基础 不管是C还是C++,不管是Java还是PHP,想成为一名合格的...

盛飞的专栏 7万+

YOLO26科研升级:BiFPN双向特征金字塔,让多尺度特征融合精度再突破

在目录下,新建AddModules文件夹,将bifpn.py放入其中。

LXY_LOVE36的博客 560

YOLO26创新改进 | 全网独家创新篇、小目标检测专属 | AAAI 2025 | 引入HS-FPN中的HFP和SDP创新点,从频域增强小目标特征,淘汰FPN进行升级,助力YOLO26有效涨点

本文提出HS-FPN特征金字塔网络,通过高频感知模块(HFP)和空间依赖感知模块(SDP)优化YOLO26模型。HFP利用高通滤波器增强小目标的高频特征,SDP捕获相邻像素的空间依赖关系。在AI-TOD等小目标检测数据集上,HS-FPN相比传统FPN显著提升性能。文章详细介绍了HFP和SDP的模块结构、核心代码实现,以及如何在YOLO26中集成这两个模块的配置方法,提供了多个版本的yaml文件配置方案。实验结果表明该方法能有效改善微小目标检测效果。

Ai缝合怪、助力小伙伴高效发论文 208

WordPress 在现代技术栈中的定位与适用场景分析

那天下午,团队 Slack 频道里突然跳出一条消息:“WordPress 已被淘汰,至少被我们淘汰了 :)”。发消息的是我们一位后端架构师,他刚把一个运行了五年的企业官网从 WordPress 迁移到了静态站点生成器。消息后面跟着一串技术同事的“+1”和“早就该换了”的回复。 但有趣的是,就在同一天,市场部同事正在用 WordPress 快速搭建一个新的活动落地页——拖拽组件、选择模板、发布,半小时搞定。同一个工具,在两个团队眼中,价值判断完全不同。 这种割裂感让我开始重新思考:WordPress 真的被“

weixin_30800807的博客 417

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

架构师-安全审计

安全审计是软考架构师考试中的重要知识点,考生需要掌握其核心要素、流程和工具,并能够结合实际场景进行分析和应用。通过理解安全审计的目标和方法,可以更好地设计和管理系统的安全性。安全审计是通过系统的、独立的检查,评估信息系统的安全性,识别潜在的安全风险,并提出改进建议的过程。明确审计的目标,例如确保系统符合安全策略、法律法规或行业标准。例如访问控制、加密、日志记录、入侵检测系统(IDS)等。:关于安全审计工具、流程或目标的描述,选择正确的选项。:给定一个系统场景,分析其安全审计的重点和流程。

技术博客 793

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

上一篇: 凭借这份java面试题合集,成功斩获百度、京东双offer
下一篇: 谁再说MyBatis难懂,我一本书就盖在他的脸上
Java奥利给
博客等级 码龄6年 150粉丝 154原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值