系统架构师-一文搞定架构风格

架构风格分类

五大架构风格简介子风格
数据流风格面向数据流,按照一定的顺序从前向后执行程序批处理、管道-过滤器
调用/返回风格构件与构件之间存在相互调用的关系,一般是显示的调用主程序/子程序、面向对象、层次结构(层次型架构风格)
独立构件风格构件之间是相互独立的,不存在显式的调用关系,而是通过事件触发、异步的方式执行进程通信、事件驱动系统(隐式调用)
虚拟机风格自定义了一套规则供使用者使用,使用者基于这个规则来开发构件,能够跨平台适配解释器、规则系统
以数据为中心(仓库风格)以数据为中心,所有的操作都是围绕建立的数据中心进行数据库系统、黑板系统、超文本系统
其他未分类风格闭环-过程控制:反馈循环,接收一定的输入,确定一系列的输出,最终使环境达到一个新的状态C2风格:通过连接件绑定在一起的按照一组规则运行的并行构件网络

常考风格

不全是教材内容,主要理解并区分各种架构风格,如何选用正确的架构风格。以前爱考案例对比几种风格的优缺点,最近两次没考(改版后),以后不确定还考不考,可以看一下

1. 管道/过滤器

将数据处理分为多个处理程序(过滤器),每个过滤器负责独立的处理逻辑,处理结果通过管道传给下一个过滤器
在这里插入图片描述

  • 可修改性:高。每个过滤器相互独立,修改某个过滤器不会影响其他过滤器,容易调整。
  • 灵活性:高。通过调整过滤器的顺序或组合新的过滤器,可以灵活修改数据流和处理方式。
  • 性能:高。适合并行处理数据流,但多个过滤器间的数据传递可能带来性能开销。
  • 可扩展性:高。可以通过增加或替换过滤器来扩展系统功能。
  • 交互性:低。过滤器之间通过数据流进行交互,没有直接通信,交互性较弱。

2. 面向对象风格

将软件设计成对象,封装数据和行为,支持继承和多态
在这里插入图片描述

  • 可修改性:中高。通过封装和继承机制,类和对象可以独立修改,但复杂的对象继承结构可能增加修改难度。
  • 灵活性:高。通过多态和继承等特性,系统可以灵活扩展和适应变化,但复杂的继承关系可能带来维护难度。
  • 性能:中。性能取决于对象之间的调用频率和层次深度,可能有性能开销。
  • 可扩展性:高。可以通过扩展类、继承和实现接口来增加功能,具备良好的可扩展性。
  • 交互性:中高。对象通过方法调用进行交互,但过于复杂的对象关系可能导致交互困难。

3. 事件驱动风格

系统行为由事件触发,通过事件处理程序响应不同的事件
在这里插入图片描述

  • 可修改性:高。事件处理器是松耦合的,可以独立修改不影响其它模块
  • 灵活性:高。异步和解耦使得事件处理器可以灵活添加或删除,适合应对动态变化的需求
  • 性能:高。通常采用异步处理,但事件复杂或过多事件会导致性能瓶颈
  • 可扩展性:高。可以通过添加新的事件处理器或修改事件流来扩展系统
  • 交互性:高。通过事件发布和订阅机制实现松耦合的组件交互,交互灵活且动态

4. 分层风格

将系统分为多个层次,每个层次只与相邻层交互
在这里插入图片描述

  • 可修改性:中高。某一层的修改不影响其它层,但跨层修改时会产生较大的变动
  • 灵活性:中。各层职责分明,但修改可能需要跨层修改,限制了系统的灵活性
  • 性能:中。多层之间的调用会引入额外的性能开销,特别是在跨层次操作频繁时。
  • 可扩展性:中高。可以通过增加或修改某一层的功能来扩展系统,但过多的层次可能导致复杂性增加。
  • 交互性:中。交互通常是上下层之间的调用,跨层交互较为复杂。

5.数据共享风格

多组件共享一个数据存储,组件之间通过读取和修改共享数据进行通信

  • 可修改性:低。由于多个组件依赖同一个共享数据,数据结构的修改会影响所有组件。
  • 灵活性:低。系统高度依赖共享数据,灵活性较差,系统变更时难以快速适应
  • 性能:中低。集中式数据访问可以提升一致性,但高并发访问会引起竞争和瓶颈,降低系统性能
  • 可扩展性:低。由于多个模块共用一个数据源,扩展新的功能或组件时需要重新设计数据结构
  • 交互性:中低。组件之间通过共享数据进行间接交互,依赖数据的一致性

6.解释器风格

对输入数据(如编程语言)进行解析为指令并执行,通常用于实现特定的语言或格式

在这里插入图片描述

  • 可修改性:高。可以通过修改解释器或脚本语言来轻松改变系统行为,无需重新编译整个系统。
  • 灵活性:高。系统可以在运行时动态解释新规则或指令
  • 性能:中低。解释执行的性能通常低于编译执行,特别是在处理复杂指令时性能瓶颈较为明显
  • 可扩展性:高。通过增加新的指令或规则集扩展解释器功能
  • 交互性:低。解释器通常执行线性指令,交互性较弱,但可以通过扩展语言功能增强交互

7.基于规则的系统风格

系统通过一组“if-else”规则进行推理和决策,根据输入条件匹配相应的规则并执行相应的操作。

在这里插入图片描述

  • 可修改性:高。规则可以独立添加、修改和删除,不影响系统的整体模块
  • 灵活性:高。可以动态调整或扩展规则集,灵活应对需求变化
  • 性能:中。规则数量如果较多则会面临性能瓶颈
  • 可扩展性:高。可以通过添加新的规则和推理机制来扩展系统功能
  • 交互性:中。规则间的交互通过推理引擎间接实现,规则之间的依赖性可能影响交互效率

8. 闭环控制风格

系统通过监测输出并根据反馈调整输入,形成一个闭环控制
在这里插入图片描述

  • 可修改性:低。控制回路通常固定,修改一个环节可能影响整个系统的稳定性和性能
  • 灵活性:低。闭环控制系统具有固定的反馈结构,调整和扩展的灵活性较差
  • 性能:高。通常注重快速响应和系统稳定,性能出色
  • 可扩展性:低。扩展新功能或添加新控制回路可能需要重新设计系统
  • 交互性:中。交互通常局限在传感器和控制器之间,交互方式单一

这个看熟了,如果出到论文也可以应对一番,不过改版后架构风格的权重低了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/461651.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第13课 数据处理

数轴是一维的,平面直角坐标系是二维的。单个学生的成绩是一维的,全班同学的成绩是二维的。 Python是强大的数据处理工具,可以处理多种数据文件。最基础的数据文件包括一维数据、二维数据、CSV格式数据文件。 这节课重点学习一维数据、二维数据…

3D人体建模的前沿探索:细数主流模型与技术进展

文章目录 一、前言二、主要内容SMPL文献内容:文献信息: SMPLX文献内容:文献信息: STAR文献信息: SCAPE文献内容:文献信息: BfSNet3. 文献内容: SMPLR文献内容:文献信息&a…

闪存学习_1:Flash-Aware Computing from Jihong Kim

闪存学习_1:Flash-Aware Computing from Jihong Kim 前言一、Storage Media:NAND Flash Memory1、概念2、编程和擦除操作3、读操作4、异地更新操作(Out-Place Update)5、数据可靠性6、闪存控制器(SSD主控)7…

【真题笔记】15年系统架构设计师要点总结

【真题笔记】15年系统架构设计师要点总结 分布式数据库中各种透明RAID 5IPv6 IPv4电子商务系统项目配置管理IPO图(输入加工输出图)桥接模式的UML图面向对象设计原则软件测试 在15年真题练习中,对错题模棱两可的考点进行重点记录与内容延申。…

软件测试基础知识总结

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 基础篇 1. 什么是软件测试? 软件测试(Software Testing)的经典定义是:在规定的条件下对程序进行操作&#xff…

「微服务」持续测试如何做?

如今,软件开发对于速度和灵活性的持续追求,催生了各种超越传统界限的方法和实践。而作为现代 DevOps 实践的基石,持续测试的出现与发展,正好满足了加速软件交付的需求。下面,我将和您探讨持续测试的最新发展&#xff0…

智能家居10G雷达感应开关模块,飞睿智能uA级别低功耗、超高灵敏度,瞬间响应快

在当今科技飞速发展的时代,智能家居已经逐渐成为人们生活中不可或缺的一部分。从智能灯光控制到智能家电的联动,每一个细节都在为我们的生活带来便利和舒适。而在众多智能家居产品中,10G 雷达感应开关模块以其独特的优势,正逐渐成…

中国大学慕课视频资源分析

右键查看视频信息 关注点在 urls 这个参数,仔细分析就会发现其实是由若干个.ts拓展名和一个.m3u8拓展名的视频文件,每一个.ts视频文件的时长在10秒钟左右。 中国大学MOOC将课程的视频文件拆分成若干个这样的.ts片段,并且用.m3u8记录这些片段…

T4--侯豆病毒识别

导入需要使用的包包括 from tensorflow import keras from tensorflow.keras import layers,models import os, PIL, pathlib #加载文件使用的 import matplotlib.pyplot as plt import tensorflow as tfdata_dir "第四周"data_dir pathlib.Path(da…

Chromium HTML5 新的 Input 类型tel对应c++

一、Input 类型: tel <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>test</title> </head> <body><form action"demo-form.php">电话号码: <input type"tel" name…

Python批量查找包含多个关键词的PDF文件

在信息爆炸的时代&#xff0c;数据管理变得愈发重要。U盘作为一种便携式存储设备&#xff0c;常常承载着我们大量的个人和工作数据。然而&#xff0c;随着文件数量的增加&#xff0c;在U盘中快速找到特定文件常常成为一个令人头疼的难题。我们通常可以采用everything来快速查找…

宿舍人走自动断电系统控制的重点

石家庄光大远通电气有限公司学生公寓人走断电人来自动送电系统是一种智能化的用电管理系统&#xff0c;旨在提高高校宿舍的用电安全性和管理效率。这种系统通常具有以下功能和特点&#xff1a; 1. 人走断电功能&#xff1a;系统能够通过感知技术检测宿舍内是否有人员活动。当检…

Maple MapleSim 2024.2 新版本发布

Maple 2024.2 Maple 2024.2 是 Maple 2024 版本的维护更新&#xff0c;在多个方面对 Maple 2024 进行了修正和改进&#xff0c;包括&#xff1a; 可以将工作表标签页打开在新的窗口中 嵌入式组件列表增加了新的功能 GUI 组件面板图标更新 可滚动矩阵的改进 修正包含非英文字…

centos7之LVS-DR模式传统部署

介绍 优缺点以及适用场景 优点&#xff1a;能负载更多的Realserver减轻LB的压力,性能高于tun模式。 缺点&#xff1a;不支持端口转发(VIP:80必须代理RIP:80),Realserver和LVS需要在同一网段下。 适用&#xff1a;适用于大多数公司&#xff0c;也是大多数公司用的最多的模式。…

Springboot 整合 Java DL4J 实现文本分类系统

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…

【探索新视界】体验ONLYOFFICE:打破传统,开启文档编辑与协作新篇章

文章目录 每日一句正能量引言ONLYOFFICE 产品简介功能与特点1. 兼容性2. 实时协作3. 评论和修订4. 模板库5. 数据分析工具6. 跨平台支持7. 安全性和隐私 体验与测评1. 用户界面2. 性能测试3. 协作体验4. 移动办公5. 客户支持 邀请用户使用如何开始 ONLYOFFICE 项目介绍。关于 O…

学Linux的第五天

目录 命令解释器-shell-负责解析用户输入的命令 分类&#xff1a; type --查看命令是内置命令、外置命名、alias命令 注意 Linux 中的特殊符号 拓展 命令别名aliasalias 别名原命令 - 参数 常用的别名untar&#xff0c;wget,getpass,ping,speed,ipe,c 删除别名unalias…

谷歌被俄罗斯罚款2,500,000,000,000,000,000,000,000,000,000,000,000美元

是的&#xff01;小鹿没有写错&#xff01;你们也没有看错&#xff01; 谷歌被俄罗斯法院判决罚款$2,500,000,000,000,000,000,000,000,000,000,000,000&#xff08;注意不是卢布&#xff0c;是美元&#xff09;&#xff0c;也就是2.5万亿万亿万亿亿&#xff0c;共计36位数的罚…

Spring Cloud Sleuth(Micrometer Tracing +Zipkin)

分布式链路追踪 分布式链路追踪技术要解决的问题&#xff0c;分布式链路追踪&#xff08;Distributed Tracing&#xff09;&#xff0c;就是将一次分布式请求还原成调用链路&#xff0c;进行日志记录&#xff0c;性能监控并将一次分布式请求的调用情况集中展示。比如各个服务节…

Vision - 开源视觉分割算法框架 Grounded SAM2 配置与推理 教程 (1)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/143388189 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 Ground…