当前位置: 首页 > news >正文

什么是系统架构师?什么是系统架构?

1. 什么是系统架构师?

系统架构设计师(System Architecture Designer)是项目开发活动中的关键角色之一。系统架构是系统的一种整体的高层次的结构表示,是系统的骨架和根基其决定了系统的健壮性和生命周期的长短

系统架构设计师(系统架构设计器)是项目开发活动中的关键角色之一。系统架构是系统的一种整体的高层次的结构表示,是系统的骨架和根基,其决定了系统的健壮性和生命周期的长短.本章首先从架构定义、发展历程、典型架构和未来发展等方面概要说明,给读者建立一个架构的整体概念;然后对系统架构设计师的定义、职责、范围和工作内容等进行讲解,并说明了对于一名合格的系统架构设计师的要求。

2. 系统架构的概述

自1946年世界上第一台计算机诞生,对人类的计算工具产生了革命性变革。冯诺依曼提出了计算机由运算器,控制器,存储器,输入和输出设备五部分组成,计算机的内部采用二进制。

计算机是全球信息化发展的核心载体,随着各种基础技术突飞猛进的发展,信息系统的规模越来越大、复杂程度越来越高、系统的结构显得越来越重要。如果在搭建系统时未能设计出优良的结构,势必对系统的可靠性、安全性、可移植性、可扩展性、可用性和可维护性等方面产生重大影响。

因此,系统架构(System Architecture)是系统的一种整体的高层次的结构表示,是系统的骨架和根基,也决定了系统的健壮性和生命周期的长短。

系统架构设计师是承担系统架构设计的核心角色,他不仅是连接用户需求和系统进一步设计与实现的桥梁,也是系统开发早期阶段质量保证的关键角色。随着系统规模和复杂性的提升,系统架构设计师在整个项目研制中的主导地位愈加重要。

可以说,系统架构师就是项目的总设计师,他是一个既需要掌控整体又需要洞悉局部瓶颈,并依据具体的业务场景给出解决方案的总体设计人员;他要确认和评估系统需求,给出开发规范,搭建系统实现的核心构架,并澄清技术细节、扫清主要难点的技术人员;他要掌握技术团队的能力需要,给出项目管理方法,采用合适生命周期模型,具备以自身为核心形成团队的能力,并在项目进度计划和经费分配等方面开展评估,以预防项目风险。

3. 系统架构的定义

这里的架构(Architecture)定义来源于IEEE 1471-2000:“IEEE's Recommand Practice forArchitectural Description of Software-Intensive Systems.”标准,本标准主要针对软件密集系统进行了架构描述,其对架构定义如下: 这里的架构(体系结构)ieee 1471-2000:“ieee对软件密集型系统体系结构描述的推荐和实践”。

标准,本标准主要针对软件密集系统进行了架构描述,其对架构定义如下:

  • 架构是体现在组件中的一个系统的基本组织、它们彼此的关系与环境的关系及指导它的设计和发展的原则。
  • 系统是组织起来完成某一特定功能或一组功能的组件集。系统这个术语包括了单独的应用程序、传统意义上的系统、子系统、系统之系统、产品线、整个企业及感兴趣的其他集合。系统用于完成其环境中的一个或多个任务。 
  • 环境或者上下文决定了对这个系统的开发、运作、政策以及会对系统造成其他影响的环境和设置。 
  • 任务是由一个或者多个利益相关者通过系统达到一些目标的系统的一个用途或操作。

系统架构设计的作用主要包含以下几点:

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

4.软件架构的分类和建模方法

4.1 分层架构

分层架构(Layered Architecture)是最常见的软件架构,也是事实上的标准架构。这种架构将软件分成若干个水平层,每一层都有清晰的角色和分工,不需要知道其他层的细节。层与层之间通过接口进行通信。分层架构通常明确约定软件一定要分成多少层,但是,最常见的是四层结构,如下图所示。

  • 表现层(Presentation Layer):用户界面,负责视觉和用户互动;
  • 业务层(Business Layer):实现业务逻辑;
  • 持久层(Persistence Layer):提供数据,SQL语句就放在这一层;
  • 数据库(Database Layer):保存数据。

4.2 事件驱动架构

事件(Event)是状态发生变化时软件发出的通知。事件驱动架构(Event-driven Architecture)是通过事件进行通信的软件架构,它分成四个部分,如下图所示。

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

4.3 微核架构

微核架构(Microkernel Architecture)又称为插件架构(Plug-in Architecture),是指软件的内核相对较小,主要功能和业务逻辑都通过插件实现,如下图所示。


内核(Core)通常只包含系统运行的最小功能。插件则是互相独立的,插件之间的通信应该减少到最低,避免出现互相依赖的问题。

4.4 微服务架构

微服务架构(Microservices Architecture)是服务导向架构(Service-Oriented Architecture,SOA)的升级。每一个服务就是一个独立的部署单元(Separately Deployed Unit)。这些单元都是分布式的,互相解耦,通过远程通信协议(比如 REST、SOAP)联系,如下图所示。

微服务的三种实现模式:

  • RESTful API模式:服务通过API提供,云服务就属于这一类;
  • RESTful应用模式:服务通过传统的网络协议或者应用协议提供,背后通常是一个多功能的应用程序,常见于企业内部;
  • 集中消息模式:采用消息代理(Message Broker)可以实现消息队列、负载均衡、统一日志和异常处理,缺点是会出现单点失败,消息代理可能要做成集群。

4.5 云架构

云架构(Cloud Architecture)主要解决扩展性和并发的问题,是最容易扩展的架构。

它的高扩展性体现在将数据都复制到内存中,变成可复制的内存数据单元,然后将业务处理能力封装成一个个处理单元(Processing Unit)。若访问量增加,就新建处理单元;若访问量减少,就关闭处理单元。由于没有中央数据库,所以扩展性的最大瓶颈消失了。由于每个处理单元的数据都在内存里,需要进行数据持久化。


云架构主要分成两部分:处理单元(Processing Unit)和虚拟中间件(Virtualized Middleware),如下图所示。

(1)处理单元:实现业务逻辑。


(2)虚拟中间件:负责通信、保持会话控制(sessions)、数据复制、分布式处理和处理单元的部署。

这里,虚拟中间件又包含四个组件:

  • 消息中间件(Messaging Grid):管理用户请求和会话控制(sessions),当一个请求进来以后,它决定分配给哪一个处理单元。
  • 数据中间件(Data Grid):将数据复制到每一个处理单元,即数据同步。保证某个处理单元都得到同样的数据。
  • 处理中间件(Processing Grid):可选,如果一个请求涉及不同类型的处理单元,该中间件负责协调处理单元。
  • 部署中间件(Deployment Manager):负责处理单元的启动和关闭,监控负载和响应时间,当负载增加,就新启动处理单元,负载减少,就关闭处理单元。

5. 系统架构的常用建模方法

主要分为四种:结构模型,框架模型,动态模型,过程模型。

  • 结构模型:这是一个最直观、最普遍的建模方法。此方法以架构的构件、连接件和其他概念来刻画结构。并力图通过结构来反映系统的重要语义内容,包括系统的配置、约束、隐含的假设条件、风格和性质。研究结构模型的核心是架构描述语言。
  • 框架模型:框架模型与结构模型类似,但它不太侧重描述结构的细节,而更侧重整体的结构。框架模型主要以一些特殊的问题为目标建立只针对和适应问题的结构。
  • 动态模型:动态模型是对结构或框架模型的补充,主要研究系统的“大颗粒”行为的性质。例如,描述系统的重新配置或演化。这里的动态可以是指系统总体结构的配置、建立或拆除通信或计算的过程,这类系统模型常是激励型的。
  • 过程模型:过程模型是研究构造系统的步骤和过程,其结构是遵循某些过程脚本的结果。

6. 软件架构的应用场景

软件架构发展至今,已随着信息技术的广泛应用而成为各个领域的关键技术能力。

概括来讲,软件架构风格在实践中已被反复使用,不同的架构风格具有各自的优缺点和应用场景,比如

  1. 管道-过滤器风格适用于将系统分成若干独立的步骤;
  2. 主程序/子系统和面向对象的架构风格可用于对组件内部进行设计;
  3. 虚拟机风格经常用于构造解释器或专家系统;
  4. C/S和B/S风格适合于数据和处理分布在一定范围,通过网络连接构成系统;
  5. 平台/插件风格适用于具有插件扩展功能的应用程序;
  6. MVC风格被广泛地应用于用户交互程序的设计;
  7. SOA风格应用在企业集成等方面;
  8. C2风格适用于GUI软件开发,用以构建灵活和可扩展的应用系统等。

而对于现代大型软件,很少使用单一的架构风格进行设计与开发,而是混合多种风格,从不同视角描述大型软件系统的能力,并可保证软件系统的可靠性、可扩展性、可维护性等非功能属性的正确描述。
 

7.架构师应该具备的专业素质

  1. 掌握业务领域的知识。
  2. 掌握技术知识
  3. 掌握设计技能
  4. 具备编程能力
  5. 具备沟通能力
  6. 具备决策能力
  7. 知道组织策略
  8. 也是谈判专家

8. 架构师的知识结构

架构设计师综合的知识能力结构主要包括10个方面。

(1)战略规划能力。

(2)业务流程建模能力。

(3)信息数据架构能力。

(4)技术架构设计和实现能力。

(5)应用系统架构的解决和实现能力。

(6)基础IT知识及基础设施、资源调配的能力。

(7)信息安全技术支持与管理保障能力。

(8)IT审计、治理与基本需求的分析和获取能力。

(9)面向软件系统可靠性与系统生命周期的质量保障服务能力。

(10)对新技术与新概念的理解、掌握和分析能力。

相关文章:

什么是系统架构师?什么是系统架构?

1. 什么是系统架构师? 系统架构设计师(System Architecture Designer)是项目开发活动中的关键角色之一。系统架构是系统的一种整体的高层次的结构表示,是系统的骨架和根基,其决定了系统的健壮性和生命周期的长短。 系统架构设计…...

大数据NoSQL数据库HBase集群部署

目录 1. 简介 2. 安装 1. HBase依赖Zookeeper、JDK、Hadoop(HDFS),请确保已经完成前面 2. 【node1执行】下载HBase安装包 3. 【node1执行】,修改配置文件,修改conf/hbase-env.sh文件 4. 【node1执行】&#xf…...

百乐钢笔维修(官方售后,全流程)

文章目录 1 背景2 方法3 结果 1 背景 在给钢笔上墨的途中,不小心总成掉地上了,把笔尖摔弯了(虽然还可以写字,但是非常的挂纸),笔身没有什么问题,就想着维修一下笔尖或者替换一下总成。 一般维…...

Redis 介绍安装

数据库 关系型数据库 关系型数据库是一个结构化的数据库,创建在关系模型(二维表格模型)基础上,一般面向于记录。 SQL 语句(标准数据查询语言)就是一种基于关系型数据库的语言,用于执行对关系型…...

MyCat管理及监控

MyCat原理 在 MyCat 中,当执行一条 SQL 语句时, MyCat 需要进行 SQL 解析、分片分析、路由分析、读写分离分析等操作,最终经过一系列的分析决定将当前的SQL 语句到底路由到那几个 ( 或哪一个 ) 节点数据库,数据库将数据执行完毕后…...

滑动窗口算法题

更新结果 1、判断条件成立后更新结果 2、入窗口后即可更新结果 判断: 出窗口后状态更新,循环回去再判断。 1、长度最小的子数组 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台...

部署zabbix代理服务器、部署zabbix高可用集群

目录 部署zabbix代理服务器 1、环境设置 2、设置 zabbix 的下载源,安装 zabbix-proxy 3、配置Mariadb yum源,并下载marisdb数据库 4.、启动数据库,并初始化数据库 5、登录数据库,创建数据库并指定字符集,并进行…...

[stm32]外中断控制灯光

在STM32CubeMX中配置外部中断功能和参数 1、将上拉输入的引脚设置为:GPIO_EXTI功能 2、GPIO模式设为下降沿触发外部中断,使能上拉电阻,用户标签 3、要将NVIC的相关中断勾选 只有将中断源进行勾选,相关的中断请求才能得到内核的…...

huggingface下大模型最好的方案

一、背景: 搞模型应用,看看别家的模型,huggingface模型大市场,国际明星企业都在上发布开源大模型,一般5G,甚至10G更大,怎么下载呢? 二、方案 1、git clone 会把整个工程给下载下来…...

Maven 密码加密

一、简介 Maven支持服务器密码加密。该解决方案解决的主要用例是: 多个用户共享同一台生成计算机(服务器、CI 框)有些用户有权将 Maven 工件部署到存储库,有些则没有。 这适用于任何需要授权的服务器操作,而不仅仅是…...

Socks5代理和代理IP:网络工程师的多面利器

在数字时代,网络工程师的角色日益重要,他们需要应对跨界电商、爬虫、出海业务、网络安全和游戏等领域的技术挑战。而Socks5代理和代理IP技术作为他们的利器,发挥着至关重要的作用。本文将探讨这两种技术在不同领域的应用,展现其在…...

模拟信号隔离器在水处理控制系统中的应用方案

安科瑞 崔丽洁 摘要:水处理控制系统中,其控制、监测模块的非电量模拟量传感器采用信号隔离器的接线方式合理地解决了相关模拟量传感器供电电源安全和相对独立的问题,保证了监测模块的电源、模拟量采集模块和输出模块的相对隔离,降…...

XML是不是主要用做配置文件?

2023年10月11日,周三下午 这几天发现tomcat的配置文件主要是用XML文件来写的, 于是就有了这个问题。 是的,XML非常适合用来做配置文件。 XML作为配置文件的主要优点: 可读性强。XML使用标签结构组织数据,内容清晰易懂。跨语言和跨平台。XML作为纯文本…...

在 Elasticsearch 中实现自动完成功能 3:completion suggester

在这篇博文中,我们将讨论 complete suggester - 一种针对自动完成功能进行优化的 suggester,并且被认为比我们迄今为止讨论的方法更快。 Completion suggester 使用称为有限状态转换器的数据结构,该结构类似于 Trie 数据结构,并且…...

走进Flink

什么是Flink Flink是一个分布式的、高性能的、可伸缩的、容错的流处理引擎,它支持批处理和流处理,并提供了丰富的 API 和库,是实时数据处理的理想选择 由Java 和 Scala 实现的,所以所有组件都会运行在Java 虚拟机【单个JVM也可以】…...

Kubernetes核心组件Services

1. Kubernetes Service概念 Service是kubernetes最核心的概念,通过创建Service,可以为一组具有相同功能的POD(容器)应用提供统一的访问入口,并且将请求进行负载分发到后端的各个容器应用上。 在Kubernetes中&#xf…...

Win10 系统中用户环境变量和系统环境变量是什么作用和区别?

环境: Win10专业版 问题描述: Win10 系统中用户环境变量和系统环境变量是什么作用和区别? 解答: 在Windows 10系统中,用户环境变量和系统环境变量是两个不同的环境变量,它们具有不同的作用和区别 1.用…...

rust模式

一、模式是什么 模式是Rust中特殊的语法,它用来匹配值 二、模式的使用场景 (一)match match的每个分支箭头左边部分就是模式。 match VALUE {PATTERN > EXPRESSION,PATTERN > EXPRESSION,PATTERN > EXPRESSION, }例子 match x …...

紫光同创FPGA 多路视频处理:图像缩放+视频拼接显示,OV7725采集,提供PDS工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐FPGA图像缩放方案推荐FPGA视频拼接叠加融合方案推荐紫光同创FPGA图像采集方案推荐紫光同创FPGA图像缩放方案推荐紫光同创FPGA视频拼接方案推荐 3、设计思路框架为什么选择OV7725摄像头?视频源选择OV7725摄像头配置及采集动态彩…...

软考 系统架构设计师系列知识点之软件质量属性(4)

接前一篇文章:软考 系统架构设计师系列知识点之软件质量属性(3) 所属章节: 第8章. 系统质量属性与架构评估 第2节. 面向架构评估的质量属性 相关试题 3. 某公司欲开发一个在线交易系统。在架构设计阶段,公司的架构师…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)

前言: 双亲委派机制对于面试这块来说非常重要,在实际开发中也是经常遇见需要打破双亲委派的需求,今天我们一起来探索一下什么是双亲委派机制,在此之前我们先介绍一下类的加载器。 目录 ​编辑 前言: 类加载器 1. …...

WebRTC从入门到实践 - 零基础教程

WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC? WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音…...

十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建

【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...