高级系统架构师 第一章

第1章 绪论

1.1 系统架构概述

1.1.1 系统架构的定义及发展历程

1 . 系统架构的定义

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

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

系统用于完成其环境中的一个或多个任务。

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

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

系统架构

    是系统的一种整体的 高层次的 结构表示,是系统的骨架和根基;
   
    支撑和链接各个部分;
	 
	包括组件、连接件、约束规范 以及指导这些内容设计与演化的原理
	
	是刻画系统整体抽象结构的一种手段

系统架构设计的作用:

    解决相对复杂的需求分析问题;

	解决非功能属性在系统占据重要位置的设计问题; 

	非功能属性,也称为质量属性,是软件系统在满足基本功能需求之外所必须展现的特性,如性能、可靠性、可用性、安全性、可维护性、可扩展性等。系统架构设计通过综合考虑系统的非功能属性需求,采用合理的架构模式和设计原则,确保软件系统能够长期稳定运行、高效性能以及灵活应对未来变化,从而满足用户对高质量软件系统的期望。

	解决生命周期长、扩展性需求高的系统整体结构问题;

	解决系统 组件集成 问题

	解决业务流程再造难的问题。

2 .发展历程

模块化、组件化

1.1.2 软件架构的常用分类及建模方法
1 . 软件架构的常用分类

(1) 分层架构

 这种架构将软件分成各种个水平层,每一层有清晰的角色和分工,不需要知道其他层的细节。
 层与层之间通过接口进行通信。 通常是4层架构。
 
 表现层:用户界面,负责视觉和用户互动
 
 业务层:实现业务逻辑
 
 持久层:负责数据的持久化存储和访问。为了实现这一功能,持久层通常会包含与数据库交互的代码,其中就包括了SQL语句。
 
 数据库:数据的存储
 
 有的项目在业务层和持久层之间加上服务层, 提供不同业务逻辑需要的一些通用接口。提到用户的请求将依次通过四层处理,且不能跳过其中任何一层时,这通常指的是一种典型的四层架构模型,具体包括表现层(或称为界面层)、业务逻辑层(业务层)、服务层(在某些架构中可能包含)以及数据访问层(持久层)。

软件架构中的分层架构是一种将系统划分为多个层次,每个层次负责不同的职责和功能,层次之间通过接口进行通信和交互的架构模式。这种架构模式在软件开发中得到了广泛应用,以下是一些分层架构的应用事例:

1. 多人在线社区系统
应用背景:一个复杂功能的多人在线社区系统,需要满足玩家移动、换装、交友、聊天、广播等多种功能。
分层架构应用:
用户接口层:负责与用户交互,提供用户界面,如网页或移动应用界面。
应用层:定义系统的业务功能,如处理玩家移动、换装、添加好友等请求,并调用领域层实现具体逻辑。
领域层:实现业务逻辑,如验证玩家身份、处理游戏内物品交换等。
基础设施层:为其他各层提供技术支持,如数据库访问、网络通信等。
2. 电子商务系统
应用背景:一个在线购物平台,支持商品展示、购物车管理、订单处理等功能。
分层架构应用:
表示层:负责展示商品信息、用户账户信息等,与用户进行交互。
业务逻辑层:处理商品搜索、购物车添加删除、订单生成等业务逻辑。
数据访问层:负责与数据库交互,执行数据的增删改查操作。
基础设施层:提供系统运行的底层支持,如服务器管理、网络安全等。
3. 企业资源规划(ERP)系统
应用背景:整合企业内部各部门的管理信息系统,如财务、采购、生产、销售等。
分层架构应用:
用户界面层:提供统一的用户界面,供企业员工访问和操作。
应用层:定义系统的业务流程和功能,如采购订单处理、库存管理等。
业务逻辑层:实现具体的业务规则和处理逻辑。
数据访问层:与数据库交互,管理企业资源数据。
基础设施层:支持系统的稳定运行,包括服务器、网络、安全等基础设施。
4. 政府信息化系统
应用背景:政府部门的信息化管理系统,如电子政务平台。
分层架构应用:
表示层:提供政府服务的用户界面,如在线办事大厅、公告栏等。
业务逻辑层:处理各种政府业务流程,如审批、查询等。
数据访问层:与政府数据库交互,管理政务数据。
基础设施层:支持系统的稳定运行和数据安全。
5. 银行系统
应用背景:银行的核心业务系统,包括账户管理、交易处理、风险管理等。
分层架构应用:
用户接口层:提供ATM机、网上银行、手机银行等用户接口。
应用层:处理用户的交易请求、查询请求等。
领域层:实现银行业务的核心逻辑,如账户验证、交易授权等。
基础设施层:支持系统的运行和数据处理,包括服务器、数据库、网络等。

(2)事件驱动架构

是一种基于事件和消息的响应式系统设计模式。它通过将系统的各个组件通过事件进行通信和协作,实现了高度的模块化和解耦。

事件队列:接收事件的入口

分发器:将不同的事件分发到不同的业务逻辑单元

事件通道:分发器与处理器之间的联系渠道

事件处理器:实现业务逻辑,处理完成后会发出事件,触发下一步操作。

事件驱动架构(Event-Driven Architecture,EDA)的应用事例广泛,涵盖了多个领域。以下是一些具体的应用实例:

1. 在线购物系统
用户注册:当用户在系统中注册账号时,会触发一个用户注册事件。该事件被发送到事件总线,然后由相应的处理程序接收并处理,如将用户信息存储到数据库中,发送欢迎邮件等。
商品下单:用户下单购买商品时,会触发商品下单事件。该事件被发送到事件总线,处理程序会执行更新库存数量、生成订单、发送订单确认短信等操作。
支付成功:用户支付订单成功后,会触发支付成功事件。处理程序会更新订单状态、生成支付成功通知、发送商品发货信息等。
订单取消:用户取消订单时,会触发订单取消事件。处理程序会更新订单状态、释放库存、发送订单取消通知等。
2. 物联网(IoT)系统
设备状态变化:在物联网系统中,设备的状态变化(如温度上升、湿度变化、设备故障等)会触发相应的事件。这些事件可以被发送到事件总线,由不同的处理程序进行处理,如发送警报、更新数据库、触发维修流程等。
智能家居:智能家居系统中的设备(如智能灯泡、智能门锁、智能温控器等)可以通过事件驱动架构进行交互。例如,当用户通过手机APP打开智能灯泡时,会触发一个控制事件,该事件被发送到事件总线,然后由相应的处理程序控制灯泡打开。
3. 实时数据处理和分析
大数据处理:在大数据场景下,事件驱动架构可以实现实时数据处理和分析。当数据源(如传感器、日志文件、用户行为数据等)产生新数据时,会触发数据处理事件。这些事件被发送到事件总线,由处理程序进行实时分析、聚合、存储等操作。
实时分析系统:在实时分析系统中,如股票价格分析、网络流量监控等,事件驱动架构可以确保数据处理的实时性和准确性。每当有新的数据到达时,就会触发分析事件,由相应的处理程序进行实时分析和决策。
4. 云计算和微服务架构
资源调度和管理:在云计算场景下,事件驱动架构可以实现资源的实时调度和管理。当系统资源(如CPU、内存、存储等)的使用情况发生变化时,会触发资源调度事件。这些事件被发送到事件总线,由资源管理程序进行资源分配和调度。
微服务通信:在微服务架构中,不同服务之间可以通过事件进行通信和协调。每个服务都可以作为事件的生产者和消费者,通过事件总线进行消息的发布和订阅。这种方式使得服务之间的耦合度降低,提高了系统的可扩展性和灵活性。
5. 人工智能和机器学习
模型更新和预测:在人工智能和机器学习场景下,事件驱动架构可以实现机器学习模型的实时更新和预测。当新的训练数据到达时,会触发模型训练事件。训练完成后,模型更新事件会被发送到事件总线,由相应的处理程序进行模型部署和预测。
复杂AI工作流:在编排复杂的AI工作流时,如视频生成字幕、自然语言处理等任务中,事件驱动架构可以确保各个任务之间的有序执行和高效协同。每个任务都可以触发相应的事件,由事件总线进行事件的传递和处理。
这些应用事例展示了事件驱动架构在不同领域中的灵活性和实用性。通过合理定义和处理事件,事件驱动架构可以帮助构建高效、可扩展、高可用的应用系统。

(3)微核架构

微核架构(Microkernel Architecture),也被称为插件化架构(Plug-in Architecture),是一种面向功能进行拆分的可扩展性架构。在微核架构中,软件的内核相对较小,主要承担系统运行的最小功能,如进程调度、内存管理、设备驱动接口等核心服务,而大部分的功能和业务逻辑则通过插件(或称为模块、组件)来实现。

微核架构的特点包括:
内核精简:内核仅包含系统运行的必要功能,使得系统更加轻量、高效。
插件化:大部分功能和业务逻辑通过插件实现,这些插件可以独立开发、测试、部署和升级,提高了系		统的灵活性和可扩展性。
低耦合:插件之间相对独立,减少了它们之间的直接通信和依赖,降低了系统的复杂度。
易于扩展:新的功能可以通过开发新的插件来添加,而无需修改内核代码,从而简化了系统的扩展过	程。
动态加载:插件可以在系统运行时动态地加载和卸载,提高了系统的可维护性和响应速度。
微核架构的应用场景:
微核架构广泛应用于各种软件和系统中,如操作系统(如UNIX的某些变种)、开发工具(如Eclipse 	  IDE)、客户端软件(如淘宝APP)以及企业级业务系统(如保险公司的保险核算逻辑系统)等。在这	 些应用中,微核架构使得系统能够灵活地适应不同的需求和变化,同时保持了较高的稳定性和可靠性。

微核架构的优缺点:

优点:
良好的功能延伸性:需要什么功能,开发一个插件即可。
功能之间是隔离的:插件可以独立地加载和卸载,降低了系统间的耦合度。
可定制性高:适应不同的开发需要。
可以渐进式地开发:逐步增加功能,降低了开发风险。

缺点:
扩展性(scalability)差:内核通常是一个独立单元,不容易做成分布式。
开发难度相对较高:因为涉及到插件与内核的通信,以及内部的插件登记机制等复杂问题。

(4)微服务架构

微服务架构是一种以服务为中心的架构风格,它将一个大型应用拆分为多个小型、自治的服务。每个服务都运行在其独立的进程中,并拥有自己的业务边界和独立的数据存储,可以独立开发、部署和扩展。这些服务之间通过轻量级的通信机制(如HTTP/REST、消息队列等)进行交互,形成一个松耦合的系统。微服务架构的核心思想是将复杂的系统拆分为多个小型服务,每个服务都有一个明确的责任,从而减少系统的复杂性,并提高开发效率和灵活性。

一、定义与特点
定义:微服务架构是一种分布式系统架构,它将应用程序拆分为一系列小型服务,每个服务都运行在其独立的进程中,并使用轻量级通信机制相互通信,以实现业务逻辑。
特点:
模块化:将应用程序拆分为一系列小型服务,每个服务都是独立的模块,易于维护和扩展。
独立部署:每个服务都可以独立部署,无需影响其他服务。
松耦合:每个服务都使用独立的数据存储,相互之间松耦合,避免了单点故障。
高可用性:服务可以水平扩展,以应对高流量和高并发请求。
技术多样性:不同的服务可以使用不同的技术栈,例如Java、Python、Node.js等,充分利用各种技术的优势。
二、优势
提高开发效率:由于每个服务都是独立的,团队可以并行开发,从而提高开发速度。
增强系统灵活性:微服务架构允许团队根据业务需求快速调整服务,而无需对整个系统进行重构。
提高系统可伸缩性:通过水平扩展单个服务,可以轻松应对高流量和高并发请求。
降低系统复杂性:将大型应用拆分为多个小型服务,降低了系统的整体复杂性。
三、挑战与解决方案
挑战:
分布式系统的挑战:如网络延迟、分布式事务等。
服务治理:如何有效地管理和监控大量的微服务。
数据一致性:在分布式系统中保持数据一致性是一个难题。
解决方案:
使用轻量级通信协议:如HTTP/REST,以减少网络延迟。
引入服务治理框架:如Spring Cloud、Dubbo等,以提供服务注册、发现、配置管理等功能。
采用分布式事务解决方案:如SAGA模式、TCC(Try-Confirm-Cancel)模式等,以解决分布式事务问题。
四、最佳实践
拆分服务的原则:根据业务功能和数据边界来拆分服务。
设计良好的API接口:确保API接口清晰、简洁、易于理解和使用。
采用自动化部署和测试:以提高开发和运维效率。
实时监控和日志记录:以便及时发现和解决问题。
选择合适的技术栈:根据业务需求和技术团队的能力来选择合适的技术栈。
综上所述,微服务架构是一种将大型应用拆分为多个小型、自治服务的分布式系统架构风格。它具有提高开发效率、增强系统灵活性、提高系统可伸缩性等优点,但同时也面临着分布式系统的挑战和服务治理等难题。通过采用合适的解决方案和最佳实践,可以充分发挥微服务架构的优势并克服其挑战。

(5)云架构

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

一、处理单元(Processing Unit)
处理单元是云架构中实现业务逻辑的核心部分。它们被封装成独立的处理单元,负责处理特定的业务请求。处理单元具有以下特点:

业务逻辑封装:每个处理单元都封装了特定的业务逻辑,使得业务处理更加模块化和独立。
高扩展性:随着访问量的增加,可以新建处理单元来处理更多的业务请求;当访问量减少时,可以关闭部分处理单元以节省资源。
内存数据处理:处理单元通常将数据复制到内存中,变成可复制的内存数据单元,以提高数据处理速度和效率。
二、虚拟中间件(Virtualized Middleware)
虚拟中间件在云架构中扮演着至关重要的角色,它负责处理单元之间的通信、会话控制、数据复制、分布式处理以及处理单元的部署等任务。虚拟中间件主要包括以下四个组件:

消息中间件(Messaging Grid)
功能:主要用于管理用户请求和会话控制。当一个请求进入系统时,消息中间件负责将该请求分配给适当的处理单元进行处理。
作用:确保请求能够高效、准确地被处理,避免请求拥堵和延迟。
数据中间件(Data Grid)
功能:负责将数据复制到每一个处理单元,即实现数据同步。确保每个处理单元都能获取到相同的数据,以保证业务处理的一致性和准确性。
作用:提高数据的可靠性和可用性,防止数据丢失和不一致的情况发生。
处理中间件(Processing Grid,可选)
功能:如果一个请求涉及不同类型的处理单元,处理中间件负责协调这些处理单元之间的协作。确保不同类型的处理单元能够相互配合,共同完成复杂的业务处理任务。
作用:提高系统的整体性能和业务处理能力,使得系统能够应对更加复杂和多样化的业务需求。
部署中间件(Deployment Manager)
功能:负责处理单元的启动和关闭,监控负载和响应时间。当负载增加时,部署中间件会启动新的处理单元来分担压力;当负载减少时,则会关闭部分处理单元以节省资源。
作用:实现资源的动态分配和调度,确保系统能够始终保持高效、稳定的运行状态。
综上所述,云架构通过处理单元和虚拟中间件的协同工作,实现了高扩展性、高可用性和高性能的业务处理能力。这种架构模式为现代互联网应用提供了强有力的支撑和保障。
2.系统架构的常用建模方法

(1)结构模型 最直观、最普遍
以架构的构件、连接件和其他概念来刻画结构。
力图通过结构来反映系统的重要语义内容,包括系统的配置、约束、隐含的假设条件、风格和性质。
(2)框架模型 与结构模型类似,但不太侧重描述结构的细节,更侧重整体的框架。框架模型主要以一些特殊的问题为目标 建立 只针对和适应问题 的结构。
(3)动态模型
系统架构的动态模型是对结构或框架模型的补充,主要研究系统的“大颗粒”行为的性质。这里的“动态”可以指系统总体结构的配置、建立或拆除通信通道或计算的过程。以下是关于系统架构动态模型的详细解释:

一、定义与功能
动态模型不仅关注系统的静态结构(如组件和它们之间的静态关系),还着重于描述系统在运行时的行为变化。它帮助理解系统在不同状态下如何响应外部事件和内部状态变化,以及如何与其他系统或组件进行交互。

二、核心要素
状态变化:动态模型关注系统状态的变化过程,包括状态转换的条件、触发事件以及转换后的新状态。
交互行为:它描述系统组件之间如何通过消息传递、事件触发等方式进行交互,以及这些交互如何影响系统的整体行为。
时间因素:动态模型还考虑时间因素在系统行为中的作用,包括系统对事件的响应时间、处理时间以及不同事件之间的时间顺序关系。
三、应用场景
动态模型在多种系统架构设计和分析中都有重要应用,特别是在需要处理复杂交互和状态变化的系统中。例如:

实时系统:在实时系统中,动态模型对于确保系统能够在规定时间内响应外部事件至关重要。
分布式系统:在分布式系统中,动态模型有助于理解不同节点之间的通信和协作机制,以及系统如何处理节点故障和通信中断等异常情况。
软件架构演化:在软件架构的演化过程中,动态模型可以帮助评估不同设计方案对系统行为的影响,从而选择最合适的架构方案。
四、建模方法
动态模型可以通过多种方法进行建模,包括但不限于:

状态图:使用状态图来描述系统的状态转换和事件触发机制。状态图清晰地展示了系统在不同状态下的行为和它们之间的转换关系。
序列图:序列图展示了对象之间交互的顺序和过程,有助于理解系统组件之间的协作方式和消息传递机制。
活动图:活动图用于描述系统中活动的执行流程,包括活动的开始、结束、并发执行和条件分支等。
综上所述,系统架构的动态模型是理解和分析系统行为变化的重要工具。通过构建动态模型,可以更加深入地理解系统的运行机制和交互方式,从而为系统的设计和优化提供有力支持。

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

上述四种模型并不是完全独立的,通过有机的结合才可形成一个完整的模型来刻画软件架构,也将能更加准确、全面的反映软件架构。

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值