【软考】系统架构设计风格分类的个人理解

news2024/11/24 22:44:22

个人适当学习了软考系统架构设计师中关于系统架构设计相关的内容,梳理了一下相关信息。

常见架构类型和常见分类

常见的软考中出现的系统架构列举如下:

  • 分层架构
  • 管道-过滤器架构
  • 客户端-服务器架构
  • 模型-视图-控制器架构,即MVC架构
  • 事件驱动架构
  • 微服务架构
  • 黑板架构
  • 解释器模式
  • 数据仓库风格架构
  • 面向服务架构

网上查找到的资料一般把架构分为五类架构风格,分别是数据流风格,调用返回风格,独立构建风格,虚拟机风格和仓库风格。并对上述系统进行了归类,归类到这五种架构风格中。

在这里插入图片描述

架构分类之个人理解

以下纯属个人角度的理解,和软考本身的考点和预期可能不相符合,请注意甄别。

针对上述分类个人认为,感觉有在把不同维度或者层次的内容强行放在同一层次来进行比较的嫌疑,个人感觉非常别扭,所以我重新按照个人的理解进行了分类。同时也参考了上述的五类架构风格的分类。

上述分类个人感觉是在把不同层次的系统混为一谈,比如说"分层架构",可以是服务器程序,也可以是客户端程序中的一种实践方式,但是客户端-服务器架构,则是在描述一个典型的网络结构模式,当然这也可以是一种广义上的系统架构,但是因为需要从系统架构的角度去分类,混为一谈就会显得很混乱,所以我觉得最重要的是理清楚系统的层次的概念。

个人按照两层一类来对上述架构风格进行划分。

第一层,整体系统 还是 单体系统

第一层是当前描述的系统是否存在和外界的交互,不存在交互则是一个逻辑自洽的整体系统,而存在交互则认为这个系统是一个和外界存在交互的单体系统。

从这个层面来说,客户端-服务器架构个人认为描述的是一个整体系统,事件驱动架构个人认为也是一个整体系统,这里可能会存在疑问,事件驱动往小了说是一种编程框架,往大了说则决定了系统的运行机制,我理解事件驱动架构的核心是决定了包括客户端和服务器在内的整个系统的信息交互方式,也就是客户端和服务器不直接交互,而是通过这个事件驱动框架进行交互,这就是事件驱动架构。

而上述其他的架构,个人认为都是在描述单体系统。

第二类,请求响应系统 还是 输入输出系统

第二类是对单体和外界交互的方式进行分类。我们这里把单体系统都视作服务端(比如手机APP也可以视作服务端,客户端就是我们用户,或者是其他调用这个app的APP)根据客户端在发起请求后,和服务端的输出产物之间的关系,可以分为请求返回响应系统和输入输出系统。

请求返回响应系统中,客户端需要获取系统返回的结果,个人理解为输出结果和输入来源是同一媒介或者说界面,比如都是通过网络链路接收请求和返还结果,或者手机app界面上触发的修改,最终将修改结果呈现在手机app界面上。个人认为上述的分层架构,MVC架构,微服务架构,黑板架构,数据仓库风格架构,面向服务架构都是属于这一类的。

而输入输出系统中,客户端不需要获取到系统返回的结果,客户端只是输入系统,而输出是在其他界面,或者说是其他介质上。比如管道-过滤器系统的典型应用,编译器,输入为源文件,输出产物为可执行文件。或者闭环控制架构,其输入为设定的温度,和从温度传感器接收到的当前温度,但输出是对制冷的化学过程的执行强度的控制。包括上述虚拟机风格中的解释器模式,个人认为也可以归为此类。输入为代码或者字节码,输出为操作系统的执行目标,也就是一个接近流式的处理流程。

第三层,物理上可拆分单体 还是 物理上不可拆分单体

第三层个人认为是单体系统内部是否可拆分为不同的单体。当然分层架构,内部也可以认为是有很多个不同的模块组成的,但其在物理结构上,本质上还是一个物理上不可拆分的单体,只是在逻辑上是可拆分的。

分层架构,数据仓库风格架构,黑板架构个人认为都是物理上不可拆分的单体架构。而模型-视图-控制的MVC架构,个人认为就是分层架构在WEB应用场景下的一种特例。

面向服务架构个人认为就是一种典型的物理上可拆分的单体架构,即内部可以进一步拆成物理上不同的系统,这里应该是特指物理上可拆分的请求响应系统。而微服务架构可以认为是面向服务架构的一种特例,系统架构设计时以细粒度地解耦地拆分服务为要务的一种设计方式。

个人分类Xmind

在这里插入图片描述

具体架构的简要说明

架构的组成成分

每一种架构都有各自不同的组成构件。以下列举下几种常见架构的组成构件。

  • 分层架构(四层为例:展现层,业务层,持久层,数据层)

  • 管道-过滤器架构(过滤器类型:过程起点,数据转换,测试条件,终点)

  • MVC架构(模型,视图,控制器)

  • 黑板架构(黑板,知识源,控制组件)

架构的评估维度

每种架构都可以从 使用场景类型,优点,缺点,实际用途各个维度进行理解和评估。这个待后续补充。

参考文档

https://zhuanlan.zhihu.com/p/603201577
https://zhuanlan.zhihu.com/p/564143827

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Meta 最新发布 LLaMA 2(允许商业化)

文章目录 Llama 2 模型介绍Llama 2的核心点Llama 2的测评结果Llama 2的预训练预处理数据预训练设置和模型架构 Llama-2-chat 模型介绍Llama-2-chat 模型在帮助性和安全性上的表现Llama-2-chat 模型的训练过程 Llama 2 模型介绍 2023年7月18日,Meta 发布了Llama 2&a…

字节跳动后端面试,笔试部分

背景 笔者在刷B站的时候,看到了一个关于面试的实录,前半段是八股文,后半段是笔试部分,感觉笔试部分的题目还是挺有意思的,特此记录一下。 笔试部分 问题1:SQL 这题考的是 union all 的用法,在…

流程工业停机的实际成本

流程制造工厂面临着避免停机的巨大压力,因为这可能会严重影响企业的整体生产力、盈利能力和声誉。企业对计划外停机的原因和成本了解得越多,就能做更多的事情来帮助降低停机的发生率,并在停机发生时更好地做好应对准备。 图.石油炼化工厂&…

在Redis主从系统中使用哨兵

一、什么是哨兵 Redis的哨兵(Sentinel)是Redis分布式系统中的一种特殊角色,用于监控和管理Redis主从复制架构中的主节点(master)和从节点(slave)。 哨兵的主要功能是确保Redis系统的高可用性。它…

学校教室巡课,为何你总是出错?

教育是社会进步和个人发展的重要基石,而教师的教学质量和专业能力直接关系着教育的成效和学生的学习成果。为了促进教师的专业发展和提高教学质量,在线巡课系统应运而生。 通过在线巡课系统,巡课者可以远程观察教师的授课过程,并提…

Hugging Face开源库accelerate详解

官网:https://huggingface.co/docs/accelerate/package_reference/accelerator Accelerate使用步骤 初始化accelerate对象accelerator Accelerator()调用prepare方法对model、dataloader、optimizer、lr_schedluer进行预处理删除掉代码中关于gpu的操作&#xff0…

使用Jmeter做性能测试的注意点

目录 一、性能测试注意点 二、性能指标分析 一、性能测试注意点 1. 用jmeter测试时使用BeanShell脚本获取随机参数值,会导致请求时间过长,TPS过低。应改为使用csv读取参数值,记录的TPS会更加准确。 注:进行性能测试时&#xff0…

EMC学习笔记(十七)PCB设计中的安规考虑

PCB设计中的安规考虑 1 概述2.安全标识2.1 对安全标示通用准则2.2 电击和能量的危险2.3 PCB上的熔断器2.4 可更换电池 3.爬电距离和电气间隙4.涂覆印制板4.1 PCB板的机械强度4.2 印制电路板的阻燃等级4.3 热循环试验与热老化试验4.4 抗电强度试验4.5 耐划痕试验 5.布线和供电 1…

C# 属性

文章目录 实例属性静态属性只读属性:内部只读属性:动态计算值的属性方式一:主动计算方式二:被动计算 快速生成属性的方法:输入propfull,按两下tab键,然后再按tab键一次修改有底纹的字段&#xf…

LeetCode141.环形链表

141.环形链表 目录 141.环形链表一、哈希表二、双指针 一、哈希表 最容易想到的方法就是遍历所有节点,每次遍历到一个节点的时候,判断该节点此前是否被访问过 我们可以使用哈希表来存储所有已经访问过的节点 每次到达一个节点,如果该节点已…

Cyber Triage 3.7 (Windows) - 数字取证和事件响应

Cyber Triage 3.7 (Windows) - 数字取证和事件响应 请访问原文链接:https://sysin.org/blog/cybertriage-3,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 唯一专门用于事件响应的数字取证工具 快速、准确和简单地…

matlab使用教程(4)—数组类型

1多维数组 MATLAB 环境中的多维数组是具有多个下标的数组。创建多维数组的一种方法是调用具有多个参数的 zeros 、 ones 、 rand 或 randn 。例如, R randn(3,4,5); 创建一个 345 数组,共包含 3*4*5 60 个正态分布的随机元素。 三维数组可表示在矩…

数据库端口操作指南

数据库端口主要功能是允许用户通过从这些数据库端口推送或拉取数据,从而将各种数据库集成到用户的数据流中。 打开知行之桥 EDI 系统,在工作流界面右侧可以看到端口选项卡下有众多端口,我们打开数据库分类,可以看到知行之桥 EDI 系…

Linux文件处理命令

目录: linux系统与shell环境准备linux常用命令之文件处理Linux系统登录与文件操作 1.linux系统与shell环境准备 Linux 系统简介: Linux 内核最初只是由芬兰人林纳斯托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而…

电子病历编辑器源码

电子病历系统采取结构化与自由式录入的新模式,自由书写,轻松录入。化实现病人医疗记录(包含有首页、病程记录、检查检验结果、医嘱、手术记录、护理记录等等。)的保存、管理、传输和重现,取代手写纸张病历。不仅实现了…

如何使用Spring Boot实现分页和排序?

使用Spring Boot实现分页和排序需要借助Spring Data JPA。Spring Data JPA是Spring Data项目中的一个模块,提供了简化数据访问层的功能,包括分页和排序。 接下来我们通过一段Java代码,展示如何使用Spring Data JPA和Spring Boot实现分页和排…

电压放大器在超声波焊接中的作用以及应用

电压放大器是一种运用于电子设备中的信号放大器,主要作用是将小信号放大为更高幅度的信号。在超声波焊接中,电压放大器起到了重要的作用,它可以将从传感器采集到的微小信号放大为能够被检测和处理的合适大小的信号。 超声波焊接是现代工业生产…

畅游NLP海洋:HuggingFace的快速入门

目录 前言一、HuggingFace介绍1-1、HuggingFace的介绍1-2、安装 二、Tokenizer分词库:分词工具2-0、加载BertTokenizer:需要传入预训练模型的名字2-1、使用Tokenizer对句子编码:2-2、使用增强Tokenizer对句子编码:2-3、批量编码单…

事件传播机制和事件委托

DOM事件流 DOM事件流(event flow )存在三个阶段:事件捕获阶段、处于目标阶段、事件冒泡阶段。事件捕获(event capturing):通俗的理解就是,当鼠标点击或者触发dom事件时,浏览器会从…

数字孪生系统为何开始尝试融合GIS系统?

数字孪生是一种通过数字模型实时仿真现实世界的技术,而GIS(地理信息系统)则是用于收集、存储、处理和展示地理数据的工具。将数字孪生系统与GIS系统进行融合,可以为各行业带来诸多优势和创新。那么数字孪生系统如何将GIS系统进行融…