第一章:绪论

1.1 系统架构概述

架构是体现在组件中的一个系统的基本组织、它们彼此的关系与环境的关系以及指导它的设计和发展的原则。

系统是组织起来完成某一特定功能火一组功能的组件集。系统这个术语包括了单独的应用程序、传统意义上的系统、子系统、系统之系统、产品线、整个企业及感兴趣的其他集合。系统用于完成其环境中的一个或多个任务。

环境或上下文决定了对这个系统的开发、运作、政策以及会对系统造成其他影响的环境和设置。

任务是由一个或多个利益相关者通过系统达到一些目标的系统的一个用途或操作。

通俗的说,系统架构是系统的一种整体的高层次的结构表示,是系统的骨架和根基,支撑和链接各个部分,包括组件、连接件、约束规范以及指导这些内容设计与演化的原理。系统架构设计的目的是对需要开发的系统进行一系列相关的抽象,用于指导系统各个方面的设计与实现,架构设计在系统开发过程中起着关键性作用,架构设计的优劣决定了系统的健壮性和生命周期的长短。

多年来架构的概念经过不断地演化,目前已形成了不同用途的架构模式,比较典型的架构模型包括分层架构、事件驱动架构、微核架构、微服务架构和云架构等5类。

分层架构

分层架构是最常见的架构,也是事实上的标准结构。这种架构降软件分为若干个水平层,每一层都有清晰的角色和分工,且不需要其他层的细节。层与层之间通过接口进行通信。

  • 表现层:用户界面,负责视觉和用户互动;
  • 业务层:实现业务逻辑;
  • 持久层:提供数据,存储SQL语句;
  • 数据库:保存数据。

事件驱动架构

事件是状态发生变化时软件发出的通知,事件驱动架构是通过事件进行通信的软件架构,它分为以下四个部分:

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

微核架构

微核架构也称为插件架构,是指软件的内核相对较小,主要功能和业务逻辑都通过插件实现。内核通常只包含系统允许的最小功能,而插件则是互相独立的,插件之间的通信应该减少到最低,避免出现互相依赖的问题。

微服务架构

微服务架构是服务导向架构的升级,每一个服务都是一个独立的部署单元,这些单元都是分布式且互相解耦的,彼此之间通过远程通信协议联系。

微服务分为三种实现模式:

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

云架构

云架构主要解决扩展性和并发的问题,是最容易扩展的架构。它的高扩展性体现在将数据都复制到内存中,变成可复制的内存数据单元,然后将业务处理能力封装成一个个的处理单元。如果访问量增加,则新建处理单元;如果访问量减少,则关闭处理单元。

云架构主要分层两部分:处理单元和虚拟中间件。

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

其中虚拟中间件又包含以下四个组件:

  • 消息中间件:主要用于管理用户请求和会话控制,当一个请求进来,由消息中间件决定分配给哪一个处理单元;
  • 数据中间件:将数据复制到每一个处理单元,即数据同步,保证每个处理单元都得到相同的数据;
  • 处理中间件:可选,如果一个请求涉及不同类型的处理单元,改中间件负责协调处理单元;
  • 部署中间件:负责处理单元的启动和关闭,监控负载和响应时间,当负载增加,就新启动处理单元;当负载减少,就关闭处理单元。

1.2 系统架构设计师概述

架构设计师是系统开发的主体角色,他们通过执行一系列的活动来实施架构设计。架构设计通过生成过程形成最终的产品架构,架构设计师的成功是创建架构。

架构设计师是负责系统架构的人,是系统或产品线的设计责任人,是一个负责理解和管理并最终确认和评估非功能性系统需求(如软件的可维护性、性能、复用性、可靠性等),给出开发规范,搭建系统实现的核心架构,对整个软件架构、关键构件和接口进行总体设计兵澄清关键技术细节的高级技术人员。

架构设计师在项目中的主要任务刻概述如下:

  1. 领导与协调整个项目中的技术活动,如分析、设计和实施等;
  2. 推动主要的技术决策ing最终表达为系统架构;
  3. 确定系统架构,并促使其架构设计的文档化,包括需求、设计、实施和部署等视图。

一个优秀的架构设计师通常可以做到在软件开发知识和业务领域知识之间的平衡,因此架构设计师应该具备以下专业知识:

  • 掌握业务领域的知识;
  • 掌握技术领域的知识;
  • 掌握设计技能;
  • 具备编程能力;
  • 具备沟通能力;
  • 具备决策能力;
  • 知道组织策略。
相关推荐
尸僵打怪兽3 天前
软考(中级-软件设计师)数据库篇(1101)
数据库·oracle·性能优化·软考
我码玄黄3 天前
软考系统分析师知识点三二:案例知识点三
软考高级·软考·系统分析师·软考复习
冰城的程4 天前
系统分析师-案例分析-UML
职场和发展·软考·系统分析师
尸僵打怪兽7 天前
软考(中级-软件设计师)计算机网络篇(1101)
网络·计算机网络·智能路由器·软考
zzjjiaa9 天前
2024下软考超全答题技巧,掌握好少丢20分!
经验分享·软考
清酒伴风(面试准备中......)13 天前
网络安全——防火墙技术
计算机网络·安全·web安全·软考·1024程序员节
胖圆的PM笔记15 天前
一文说清!2025年软考高项如何评职称?
软考·信息系统项目管理师·软考高项·软考证书·职称评定
NHuan^_^16 天前
软考(网工)——网络安全
软考·网工
水蓝烟雨17 天前
2024软考网络工程师笔记 - 第10章.组网技术
网络·笔记·网络工程师·软考
HL_LOVE_C19 天前
架构设计笔记-18-安全架构设计理论与实践
笔记·安全·系统架构·软件工程·软考·安全架构·层次式架构