二、系统知识笔记-系统架构概述

一、系统架构定义

系统架构是指对一个系统的整体结构和组成部分进行描述和规划的过程。系统架构定义决定了系统的设计、开发和实施过程中的关键方向和决策。是系统的骨架和根基,支撑和链接各个部分,包括组件、连接件、约束规范以及指导这些内容设计与演化的原理。它是刻画系统整体抽象结构的一种手段。架构设计优劣决定了系统的健壮性和生命周期的长短。

二、架构设计的作用

  • 解决相对复杂的需求分析问题
  • 解决非功能属性在系统占据重要位置的设计问题解决生命周期长、扩展性需求高的系统整体结构问题
  • 解决系统基于组件需要的集成问题
  • 解决业务流程再造难的问题。

系统架构设计是成熟系统开发过程中的一个重要环节,它不仅是连接用户需求和系统进一步设计与实现的桥梁,也是系统早期阶段质量保证的关键步骤。

三、软件架构的发展阶段

软件架构大致经历了四个发展阶段:
①、基础研究阶段(1968-1994): 逐步形成了以描述软件高次结构为目标的体系,形成了软件架构的雏形,随着软件规模的增大,模块化开发方法被逐步采用,为后续软件架构的发展奠定了基础

②、概念体系和核心技术形成阶段(1999-2000年):BoochRunbaugh等对软件架构进行了全新诠释,认为架构是一系列重要决策模式,同时IBM等大型软件开发组织开始关注软件架构,联手进行产品线架构的重用性调查。这一阶段的最重要的成果是软高级项目经理任铄件组件化技术,提升了软件能力和质量。

③、理论体系完善与发展阶段(1996年至今)架构研究方向成为软件工程领域的研究重点,包括:软件架构描述与表示、软件架构分析、设计与测试,软件架构发现、演化与重用;基于软件架构开发方法;软件架构风格;动态软件架构等

④、普及应用阶段(2000 年至今)

四、软件架构的常用分类及建模方法

1.软件架构的常用分类

(1)分层架构
将软件分为若干个水平层、类似于Web应用的 MVC架构 、每一层完成各自的功能不需要直到其他层的实现细节、 各层直接通过接口调用的方式完成通信。

(2)事件驱动架构
事件驱动架构(EDA)是通过事件进行通信的软件架构,是一种流行的分布式异步架构模式,适用于松散耦合系统。

分成四个部分

  • 事件队列:接收事件的入口
  • 分发器:将不同的事件分发到不同的业务逻辑单元
  • 事件通道:分发器与处理器之间的联系渠道
  • 事件处理器:实现业务逻辑,处理完成后会发出事件,触发下步操作。

(3)微核架构
又称为插件架构,是一种面向功能进行拆分的可扩展性架构,软件的内核相对较小,主要功能和业务逻辑都通过插件实现。

包含两类组件:

  • 核心系统(内核):负责和具体业务功能无关的通用功能(系统运行的最小功能),例如模块加载、模块间通信等
  • 插件模块:负责实现具体的业务逻辑,插件是互相独立的,插件之间的通信应该减少到最低,避免出现互相依赖的问题

(4)微服务架构
微服务架构演进

单体架构
将业务的所有功能集中在一个项目中开发,打成一个包部署。

分布式架构
根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务。

微服务架构
服务导向架构(SOA)的升级。每一个服务就是一个独立的部署单元,这些单元都是分布式互相解耦,通过远程通信协议(例如HTTP \ RPC等)联系。

(5)云架构
云架构指构成云系统的各种技术组件的组合。通常涉及使用虚拟化技术将多个资源放在一起并通过网络共享它们。
云架构主要解决扩展性和并发的问题,是最容易扩展的架构。
云架构主要分成两部分: 处理单元和虚拟中间件

  • 处理单元: 实现业务逻辑
  • 虚拟中间件:负责通信、保持会话控制、数据复制、分布式处理和处理单元的部署

2.系统架构的常用建模方法 (这个需要理解记忆 可能会考选择题 ☆☆☆☆☆)

软件架构的模型分成4种:

结构模型:以架构的构件、连接件和其他概念来刻画结构。并力图通过结构来反映系统的重要语义内容,包括系统的配置约束、隐含的假设条件、风格和性质。研究结构模型的核心是架构描述语言。

框架模型:框架模型与结构模型类似,但它不太侧重描述结构的细节,而更侧重整体的结构。框架模型主要以一些特殊的问题为目标建立只针对和适应问题的结构。

动态模型:动态模型是对结构或框架模型的补充,主要研究系统的"大颗粒行为的性质。例如,描述系统的重新配置或演化这里的动态可以是指系统总体结构的配置、建立或拆除通信或计算的过程,这类系统模型常是激励型的。

过程模型:过程模型是研究构造系统的步骤和过程,其结构是遵循某些过程脚本的结果。

4 种模型并不是完全独立的,通过有机的结合才可形成一个完整的模型来刻画软件架构。软件架构从不同角度来描述用户所关心架构的特征。

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

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

相关文章

go语言的切片理解

var numbers4 [...]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}myslice : numbers4[4:6]//这打印出来长度为2fmt.Printf("myslice为 %d, 其长度为: %d\n", myslice, len(myslice))myslice myslice[:cap(myslice)]//为什么 myslice 的长度为2,却能访问到第四个元…

MyBatis使⽤PageHelper(MySQL)

MyBatis使⽤PageHelper(MySQL) 一、 limit分⻚二、PageHelper插件第⼀步:引⼊依赖第⼆步:在mybatis-config.xml⽂件中配置插件第三步:编写Java代码第四步:格式化结果查看 三、SpringBoot3 集成 PageHelper …

自动驾驶---Motion Planning之Path Boundary

1 背景 在上文《自动驾驶---Motion Planning之LaneChange》中,笔者提到过两种LaneChange的思路,这里再简单回顾一下:(1)利用Routing和周围环境的信息,决定是否进行换道的决策;(2)采用的博弈思想(蒙特卡洛树搜索---MCTS)决定是否进行换道的决策。不管是变道,避让还是…

2024-02-25 Unity 编辑器开发之编辑器拓展6 —— Event

文章目录 1 Event 介绍2 重要 API3 代码示例 1 Event 介绍 ​ Event 提供许多属性和方法,允许检查和处理用户输入,主要用于 Unity 编辑器拓展开发。 ​ Input 相关内容需要在运行时才能监听输入,而 Event 专门提供给编辑模式下使用&#xf…

爬虫入门四(抽屉半自动点赞、xpath使用、动作链、打码平台、scrapy框架介绍与安装及创建项目)

文章目录 一、抽屉半自动点赞二、xpath的使用三、动作链四、打码平台介绍超级鹰打码基本测试 五、自动登录超级鹰六、scrapy框架介绍安装创建爬虫项目 一、抽屉半自动点赞 登录抽屉账号保存cookiesimport timeimport jsonfrom selenium import webdriverfrom selenium.webdrive…

(正规api接口代发布权限)短视频账号矩阵系统源码独立搭建技术开发

短视频账号矩阵系统源码独立搭建技术开发: 搭建短视频账号矩阵系统源码独立技术开发需要以下步骤: 1. 确定需求:明确系统需要实现的功能和目标,包括账号管理、视频发布、数据分析等。 2. 学习相关知识和技术:了解短视…

Adobe将类ChatGPT集成到PDF中

2月21日,全球多媒体巨头Adobe在官网宣布,推出生成式AI助手AI Assistant,并将其集成在Reader 和Acrobat 两款PDF阅读器中。 据悉,AI Assistant的功能与ChatGPT相似,可以基于PDF文档提供摘要、核心见解、基于文档内容&a…

docker 容器访问 GPU 资源使用指南

概述 nvidia-docker 和 nvidia-container-runtime 是用于在 NVIDIA GPU 上运行 Docker 容器的两个相关工具。它们的作用是提供 Docker 容器与 GPU 加速硬件的集成支持,使容器中的应用程序能够充分利用 GPU 资源。 nvidia-docker 为了提高 Nvidia GPU 在 docker 中的…

全球冰川均衡调整(GIA)数据下载链接汇总(续)

前一专栏我们介绍了一些常用的GIA模型和对应的下载地址,但是不少数据是提供的球谐数据,对于部分用户使用不方便,这里分享NASA发布的几个格网的GIA(PGR)模型产品,其下载地址为:Files (nasa.gov) …

迅速了解Ascii、GBK、Unicode、UTF-8、BCD各种编码格式的由来及关系!

《嵌入式工程师自我修养/C语言》系列——迅速了解Ascii、GBK、Unicode、UTF-8、BCD各种编码格式的由来及关系 一、Ascii编码二、GBK编码三、Unicode编码四、UTF-8编码五、BCD编码六、其他网友的总结 快速学习嵌入式开发其他基础知识?>>>>>>>&g…

什么是代码签名证书中的“硬证书”?

代码签名证书是用于验证和签名软件程序的一种数字证书。使用代码签名证书,可以保护代码完整性、防止非法篡改,标识软件发行商的身份并确保软件来源可信。按不同验证级别,代码签名证书分为扩展验证型EV代码签名证书、企业验证型OV代码签名证书…

5.2 Ajax 数据爬取实战

目录 1. 实战内容 2、Ajax 分析 3、爬取内容 4、存入MySQL 数据库 4.1 创建相关表 4.2 数据插入表中 5、总代码与结果 1. 实战内容 爬取Scrape | Movie的所有电影详情页的电影名、类别、时长、上映地及时间、简介、评分,并将这些内容存入MySQL数据库中。 2、…

tomlc99开源库使用

下载地址:GitHub - cktan/tomlc99: TOML C library 1.加载tomlc99库 只需要在工程当中添加toml.h / toml.c这两个文件就可以了 2.使用tomlc99库解析toml文件 以下是从文件中获取值的常用步骤: 解析 TOML 文件。遍历并找到 TOML 中的表。从表中提取值…

Linux命令:重复多次后台运行且不保存输出,查看命令对应的进程数量

要在后台重复运行 Linux 命令并查看对应的进程数量,你可以使用循环结构和后台运行符号 & 结合起来。以下是一个示例: bash for i in {1..3}; do your_command > /dev/null 2>&1 & done 命令 your_command > /dev/null 2>&…

智慧城市与数字孪生:共创未来城市新篇章

一、引言 随着科技的飞速发展,智慧城市与数字孪生已成为现代城市建设的核心议题。智慧城市注重利用先进的信息通信技术,提升城市治理水平,改善市民生活品质。而数字孪生则通过建立物理城市与数字模型之间的连接,为城市管理、规划…

SpringBoot自带的tomcat的最大连接数和最大的并发数

先说结果:springboot自带的tomcat的最大并发数是200, 最大连接数是:max-connectionsaccept-count的值 再说一下和连接数相关的几个配置: 以下都是默认值: server.tomcat.threads.min-spare10 server.tomcat.threa…

【Python笔记-设计模式】组合模式

一、说明 组合模式是一种结构型设计模式, 你可以使用它将对象组合成树状结构, 并且能像使用独立对象一样使用它们。 (一) 解决问题 处理树形结构:可以很好地处理树形结构的数据,使得用户可以统一对待单个对象和对象组合。统一接…

17.openEuler操作系统启动管理

openEuler OECA认证辅导,标红的文字为学习重点和考点。 如果需要做实验,建议安装麒麟信安、银河麒麟、统信等具有图形化的操作系统,其安装与openeuler基本一致。 1.系统启动流程介绍 Linux系统启动流程: POST->Bios->Grub->kernel+initrd->systemd(init)->…

C++ //练习 9.12 对于接受一个容器创建其拷贝的构造函数,和接受两个迭代器创建拷贝的构造函数,解释它们的不同。

C Primer(第5版) 练习 9.12 练习 9.12 对于接受一个容器创建其拷贝的构造函数,和接受两个迭代器创建拷贝的构造函数,解释它们的不同。 环境:Linux Ubuntu(云服务器) 工具:vim 解释…

【Elasticsearch专栏 16】深入探索:Elasticsearch的Master选举机制及其影响因素分析

Elasticsearch,作为当今最流行的开源搜索和分析引擎,以其分布式、可扩展和高可用的特性赢得了广大开发者的青睐。在Elasticsearch的分布式架构中,集群的稳健性和高可用性很大程度上依赖于其Master节点的选举机制。本文将深入剖析Elasticsearc…