系统架构师简答笔记

 软件质量属性是影响软件架构设计的重要因素?列举不同的软件质量属性名称并解释其含义?改进的方法?

1、性能:系统的响应能力,即要经过多长时间才能对某个事件作出响应或者在某段时间内系统所能处理事件的个数。

架构设计策略:增加计算资源、改善资源需求(减少计算复杂度等)、资源管理(并发、数据复制等)和资源调度(先进先出队列、优先级队列等)

2、可用性:系统能够正常运行的时间比例。

架构设计策略:Ping/Echo、心跳、异常和信息主动冗余等。

3、可靠性:软件系统在应用或错误面前,在意外或错误使用的情况下维持软件系统功能性的能力。

架构设计策略:运行时注册,主动冗余   可靠性的计算、检错技术和容错技术

4、健壮性:处理环境中,系统能够承受压力或变更的能力。

5、安全性:系统向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。

架构设计策略:抵御攻击(授权、认证和限制访问等)、攻击检测(入侵检测等)、从攻击中恢复(部分可用性策略)和信息审计等。

6、可修改性:能快速的以较高的性能价格比对系统进行变更。

架构设计策略:软件模块泛化、限制模块之间通信、使用中介、信息隐藏、延迟绑定等。

7、可变性:体系结构经扩充或变更成为新体系结构的能力。

8、易用性:用户使用一个软件产品完成指定任务的难易程度。

9、可测试性:软件发现故障并隔离、定位其故障的能力特性,以及在一定时间或成本前提下,进行测试设计、测试执行的能力。架构设计策略:记录-回放

10、功能性:系统所能完成所期望工作的能力。

11、互操作性:系统与外界或系统与系统之间的相互作用的能力。

对ESB的定义进行描述,给出ESB的主要功能?ESB的优点

企业服务总线(Enterprise Service Bus,ESB)是传统中间件技术与XML、Web服务等技术结合的产物,主要支持异构系统集成。ESB基于内容的路由和过:虑,具备复杂数据的传输能力,并可以提供一系列的标准接口。

ESB的主要功能有:

(1) 服务位置透明性;

(2) 传输协议转换;

(3) 消息格式转换;

(4) 消息路由;

(5) 消息增强;

(6) 安全性;

(7) 监控与管理。

优点:

(1) 采用ESB作为集成框架,能够实现灵活的部署结构,包括CS结构、P2P结构等。采用ESB作为集成框架,待集成系统只需要和总线进行联系,彼此之间不需要互相通信,这样就大大降低了系统的耦合程度。

(2) 采用ESB作为集成框架,在加入新的待集成系统时,只需要采用插件的方式实现传输协议和数据格式的适配即可,系统的可扩展性较强。

流程图与数据流图的含义及其区别?

数据流图:作为一种图形化工具,用来说明业务处理过程、系统边界内所包含的功能和系统中的数据流。

流程图:以图形化的方式展示应用程序从数据输入开始到获得输出为止的逻辑过程,描述处理过程的控制流。

两者的区别主要包括:

(1) 数据流图中的处理过程可并行;流程图在某个时间点只能处于一个处理过程。

(2) 数据流图展现系统的数据流;流程图展现系统的控制流。

(3) 数据流图展现全局的处理过程,过程之间遵循不同的计时标准;流程图中处理过程遵循一致的计时标准。

(4) 数据流图适用于系统分析中的逻辑建模阶段;流程图适用于系统设计中的物理建模

数据流图(Data Flow Diagram)的基本元素及其作用?

(1) External Agent(实体/外部代理):定义位于项目范围之外,但与正在被研发的系统有交互关系的人、部门、外部系统或组织。

(2) Process(加工/处理):在输入数据流或条件上执行,或者对输入数据流或条件做出响应的工作。

(3) Data Store(数据存储):静止的数据,表示系统中需要保存的数据。

(4) Data Flow(数据流):运动中的数据,表示到一个过程的数据输入,或者来自一个过程的数据输出。

 

高质量的数据流图是可读的、内部一致的并能够准确表示系统需求?

髙质量数据流图设计时应考虑的三个原则:

(1) 复杂性最小化原则。DFD分层结构就是把信息划分为小的且相对独立的一大批子集例子,这样就可以单独考查每一个DFD。如果要了解某个过程更加详细的信息,可以跳转到该过程的下一层;如果要知道一个DFD如何与其他DFD相关联,可以跳转到上一层的DFD进行考査。

(2) 接口最小化原则。接口最小化是复杂性最小化的一种具体规则,在设计模型时,应使得模型中各个元素之间的接口数或连接数最小化。

(3) 数据流一致性原则。一个过程和它的过程分解在数据流内容中是否有差别?是否存在有数据流出但没有相应的数据流入的加工?是否存在有数据流入但没有相应的数据流出的加工?

状态图和活动图的含义及其区别?

状态图:主要用于描述一个对象在其生存期间的动态行为,表现一个对象所经历的状态序列,引起状态转移的事件(event),以及因状态转移而伴随的动作(action)。

活动图:可以用于描述系统的工作流程和并发行为。活动图其实可看作状态图的特殊形式,活动图中一个活动结束后将立即进入下一个活动(在状态图中状态的转移可能需要事件的触发)。

两者最大的区别是:状态图侧重于描述行为的结果,而活动图侧重描述行为的动作。其次活动图可描述并发行为,而状态图不能。

什么是软件架构风格;

架构风格是描述某一类特定应用领域中软件系统组织方式和惯用方式。

面向对象和控制环路两种架构风格各自的特点。

面向对象架构风格的特征是将数据表示和基本操作封装在对象中。这种模式的构件是对象,对象维护自身表示的完整性,对象之间通过消息机制进行通信,对象交互时需要知道彼此的标识,通过对象之间的协作完成计算过程。

控制环路架构风格是将过程输出的指定属性维护在一个特定的参考值(设定点)。控制环路风格包括过程变量、被控变量'、输入变量、操纵变量和设定点等构件,通过收集实际和理想的过程状态信息,并能调整过程变量使得实际状态趋于理想状态。

主程序-子程序和管道-过滤器这两种架构风格的特点进行描述。  

主程序-子程序架构风格中,所有的计算构件作为子程序协作工作,并由一个主程序 顺序地调用这些子程序,构件通过共享存储区交换数据。

管道-过滤器架构风格中,每个构件都有一组输入和输出,构件接受数据输入,经过内部处理,然后产生数据输出。这里的构件称为过滤器,构件之间的连接件称为数据流传输的管道。

集中式数据架构和分布式数据架构的特点?各自釆用哪些方法提升系统的可扩展性?

集中式数据架构是由一个处理器、与它相关联的数据存储设备以及其他外围设备组成,它被物理地定义到单个位置。系统提供数据处理能力,用户可以在同样的站点上操作,也可以在地理位置隔开的其他站点上通过远程终端来操作。系统及其数据管理被某个或中心站点集中控制。

分布式数据架构使用多个计算机系统上的多个局部数据库系统构成,数据可以在多个不同的局部数据库中进行传送,由不同的数据库管理系统软件班行管理,运行在多种不同的计算机上,支持多种不同的操作系统。这些机器位于(或分布在)不同的地理位置并通过多种通信网络连接在一起。企业数据可以分布在不同的计算机上,一个应用程序可以操作位于不同地理位置的机器上的数据。

集中式数据架构通过向上扩展(Scale Up)提升系统的可扩展性。具体的实现方式包括硬件扩容(增加CPU数ft、内存容童、磁盘数量)和硬件升级(更换为高端主机或髙速磁盘等)。

分布式数据架构通过向外扩展(Scale Out)提升系统的可扩展性。具体的实现方式包括数据复制、数据垂直切分或/和水平切分、缓存和全文搜索。

系统架构中风险点、敏感点和权衡点的定义?

风险点是指架构设计中潜在的、存在问题的架构决策所带来的隐患。

敏感点是指为了实现某种特定的质量属性,一个或多个系统组件所具有的特性。

权衡点是指影响多个质量属性,并对多个质量属性来说都是敏感点的系统属性

什么是数据库建模中的反规范化技术?指出采用反规范化技术能获得哪些益处?可能带来哪些问题?常见的反规范化技术有哪些?

规范化设计后,数据库设计者希望牺牲部分规范化来提髙性能,这种从规范化设计的回退方法叫做反规范化技术。反规范化设计允许保留或者新增一些冗余数据,从而减少数据查询中表连接的数目或简化计算过程,提高数据访问效率。

采用反规范化技术的益处:能够减少数据库查询时SQL连接的数目,从而减少磁盘I/O数据量,提高查询效率。

可能带来的问题:数据的重复存储,浪费了磁盘空间;为了保障数据的一致性,增加了数据维护的复杂性。

常见的反规范化技术包括:

(1) 增加冗余列:在多个表中保留相同的列,通过增加数据冗余减少或避免查询时的连接操作;

(2) 增加派生列:在表中增加可以由本表或其他表中数据计算生成的列,减少查询时的连接操作并避免计算或使用集合函数;

(3) 表水平分割:根据一列或多列数据的值,把数据放到多个独立的表中,主要用于表数据规模很大、表中数据相对独立或数据需要存放到多个介质上时使用;

(4) 表垂直分割:对表进行分割,将主键与部分列放到一个表中,主键与其他列放到另一个表中,在查询时减少I/O次数。

解释MMU和TRAP?他们的作用是什么?

MMU内存管理机制。MMU能够实现逻辑地址到物理地址的转化,并且对访问权进行控制,既可以保护系统内核不受应用软件有意或无意的破坏,也可有效防止各软件之间的互相破坏。

TRAP系统调用机制。操作系统为实现对内核以及应用之间的保护,提供了用户态和系统态两种运行形态。操作系统内核在系统态运行,因此用户态的应用不能直接调用系统内核提供的功能接口,必须通过TRAP系统调用的方式进行。因此可以实现应用与内核之间的隔离与保护。

分别针对采用对称加密策略与公钥加密策略,说明如何利用加密技术为在网络中传输的数据提供机密性与完整性保障。

对称加密策略:

机密性:发送者利用对称密钥对要发送的数据进行加密,只有拥有正确相同密钥的接收者才能将数据正确解密,从而提供机密性。

完整性:发送者根据要发送的数据生成消息认证码(或消息摘要),利用对称密钥对消息认证码进行加密并附加到数据上发送;接收者使用相同密钥将对方发送的消息认证码解密,并根据接收到的数据重新生成消息认证码,比较两个认证码是否相同以验证数据的完整性。

公私钥加密策略:

机密性:发送者利用接收者的公钥对要发送的数据进行加密,只有拥有对应私钥的接收者才能将数据正确解密,从而提供机密性。

完整性:发送者根据要发送的数据生成消息认证码(或消息摘要),利用自己的私钥对消息认证码进行加密并附加到数据上发送;接收者利用对方的公钥将对方发送的消息认证码解密,并根据接收到的数据重新生成消息认证码,比较两个认证码是否相同以验证数据的完整性。

从构件管理支持、互操作支持以及公共服务支持三个方面说明现有分布式基础设施为构建分布式系统所提供的基本支撑。

(1) 构件管理支持:现有分布式基础设施一般通过构件容器为构件提供基本的运行环境;具体功能一般包括管理构件的实例及其生命周期、管理构件的元信息等。

(2) 互操作支持:现有分布式基础设施均提供了高层通信协议以屏蔽节点的物理特性以及各节点在处理器、操作系统、程序设计语言等方面的异构性;基于互操作支持, 开发人员在开发与调用分布式对象时,均不需自己编写处理底层通信的代码。

(3) 公共服务支持:现有分布式基础设施通常将针对分布式软件的通用支持集成于一身,以公共服务的形式提供给应用程序;其提供的常见公共服务包括命名服务、事务 服务、安全服务、持久性服务等。

开放式架构的四个基本特点。

①可移植性。各种计算机应用系统可在具有开放架构特性的各种计算机系统间进行移植,不论这些计算机是否同种型号、同种机型。

②可互操作性。如计算机网络中的各结点机都具有开放架构的特性,则该网上各结点机间可相互操作和资源共享。

③可剪裁性。如某个计算机系统是具有开放架构特性的,则在该系统的低档机上运行的应用系统应能在高档机上运行,原在高档机上运行的应用系统经剪裁后也可在低档机上运行。

④易获得性。在具有开放架构特性的机器上所运行的软件环境易于从多方获得,不受某个来源所控制。

设计模式按照其应用模式可以分为三类:创建型、结构型和行为型三者的作用?

创建型模式主要用于创建对象,为设计类实例化新对象提供指南。

结构型模式主要用于处理类或对象的组合,对类如何设计以形成更大的结构提供指南。

行为型模式主要用于描述类或对象的交互以及职责的分配,对类之间交互以及分配责任的方式提供指南。

NoSQL数据库的优缺点?

优点

(1) NoSQL数据库支持高并发数据访问,性能较高。

(2) NoSQL数据库的数据存储结构松散,能够灵活支持多种类型的数据格式。

(3) NoSQL数据库能够支持海量数据的存储,且易于横向扩展。

(4) NoSQL数据库基于分布式数据存储,不存在单点故障和性能瓶颈,系统可用性高。

缺点:

(1) NoSQL数据库的现有产品不够成熟,大多数产品处于初创期。

(2) NoSQL数据库并未形成一定的标准,产品种类繁多,缺乏官方支持。

(3) NoSQL数据库不提供对SQL的支持,学习和应用迁移成本较高。

(4) NoSQL数据库支持的特性不够丰富,现有产品提供的功能比较有限。

什么是MVC?MVC模式的优点。

MVC是一种目前广泛流行的软件设计模式。MVC强制性地将一个应用处理流程按照模型、视图、控制的方式进行分离,形成了控制器、模型、视图三个核心模块。

(1) 控制器:接受用户的输入并调用模型和视图去完成用户的请求。一方面接受视图的输入,将其转为对模型特定方法的调用;一方面处理来自模型的事件,调用适当的视图反馈给用户。

(2) 模型:应用程序的主体部分,表示业务数据和业务逻辑,可以为多个视图提供数据。

(3) 视图:用户看到并与之交互的界面。视图可以向模型查询业务状态,接收模型的数据更新事件,同步更新界面。

具有以下优点:

(1) 允许多种用户界面的扩展。在MVC模式中,视图与模型没有必然的联系,都是通过控制器发生联系,如果增加新类型的用户界面,只需修改响应的控制器和视图即可,模型无需变动;

(2) 易于维护。控制器和视图随着模型的扩展而扩展,只要保持公共接口,控制器和视图的旧版本可以继续使用;

(3) 支持功能强大的用户界面。用户界面与模型方法调用组合起来,使程序的使用更清晰,可将友好的界面发布给用户。

目前数据库管理系统提供的基本数据加密方式主要包括加解密API和透明加密两种,对这两种方式进行解释?

加解密API:数据库管理系统提供可在SQL语句中调用的加解密API,应用可以利用这些API构建自己的基础架构,对数据进行加密保护。

透明加密:安全管理员为数据库敏感字段选择加密方式及密钥强度,应用访问受保护数据时只需使用口令打开或关闭密钥表,对数据的加密和解密由数据库管理系统自动完成。

获取构件的方法有哪几种?开发构件通常采用哪几种策略?

软构件可通过多种途径获取,目前可主要归纳为以下四种方法:

(1) 修改已有构件:从现有构件中获得符合要求的构件,直接使用或做适应性修改,得到可复用的构件:

(2) 封装新构件:通过遗留工程(Legacy Engineering),将具有潜在复用价值的软件提取出来,得到可复用的构件;

(3) COTS构件:从市场上购买现成的商业软件(构件),通过处理形成满足自己需要的构件,BIJCOTS(Commercial Off-The-Shell)构件;

(4)新开发构件:针对项目需要,在分许、评估的基础上,开发新的符合要求的构件。

开发构件通常采取3种策略:

(1) 分区(partitioning):指的是将问题情景的空间分割成几乎可以独立研究的部分;

(2) 抽象(abstraction):是对在给定实践内执行指定计算的软/硬件申.元的一种抽象;

(3) 分割(segmentation):是将结构引入构件的行为,支持对行为性质进行时序推理。

DNS的负载均衡机制和基于反向代理的负载均衡机制的基本原理?

基于DNS的负载均衡机制通过DNS服务器实现,通常通过循环复用具有同一域名的多个主机地址的服务器实现负载均衡。

反向代理负载均衡则是将来自Internet的连接请求以反向代理的方式动态转发给内部网络上的多台服务器进行处理,从而达到负载均衡的目的。

Memcached代替数据库查询缓存的原因。

与MySQL查询缓存相比,使用Memcached机制存在以下优势:

(1) 缓存架构:数据库查询缓存通常每个数据库只有一个实例,因此存储内容受数据库服务器可用内存限制,可缓存数据有限;而Memcached可采用高速分布式缓存服务器结构,不受数据库服务器约束,可扩展性更好。

(2) 缓存有效性:数据库查询缓存只要在发生写操作时就会失效,即使更新的是数据库中的其他行;而Memcached可通过键值将数据进行散列缓存,有效降低缓存的更新频率,从而提高缓存的有效性。

(3) 缓存数据类型:数据库杏询缓存只能缓存数据库行,对社交网站好友动态显示等典型业务所需要的组合数据缓存缺乏有效支持,而Memcached理论上可缓存任何内容,因此可以将分散在数据库中的关系或者列表组合后进行缓存,以提高缓存数据的针对性和效率。

什么是数据持久层,使用数据持久层能够为项目开发带来哪些好处?

 

数据持久层是根据分层思想,通过建立逻辑数据操作接口,采取一定的对象/关系映射策略,隐藏数据库访问代码细节,向业务开发人员提供透明的对象持久化操作机制。

能够为项目开发带来的好处:

(1)分离业务逻辑层和数据层,降低两者之间的耦合;

(2) 通过对象/关系映射向业务逻辑提供面向对象的数据访问;

(3) 简化数据层访问,隐藏数据库链接、数据读写命令和事务管理细节。

机器人操作系统(ROS)与嵌入式实时操作系统的共同点,以及在实时性和任务通信方式两个方面的差异。

ROS与嵌入式实时操作系统的共同点:

(1)系统微型化

(2)系统专用性强

(3)软硬件依赖性强

(4)系统资源受限

ROS与嵌入式实时操作系统的差异:

实性性:ROS弱于嵌入式实时操作系统

通信方式:ROS的通信方式较为丰富,嵌入式实时操作系统通信方式单一。

数据库程序在线访问方式和ORM方式的优缺点?

数据库程序在线访问方式优点:

1、性能比直接SQL好

2、可以处理复杂查询语句

数据库程序在线访问方式缺点:

1、要求程序员懂SQL语句

2、修改与维护相对困难

ORM优点:

1、使用ORM可以大大降低学习和开发成本。

2、程序员不用再写SQL来进行数据库操作。

3、减少程序的代码量。

4、降低由于SQL代码质量差而带来的影响。

ORM缺点

1、不太容易处理复杂查询语句。

2、性能较直接用SQL差。

玩什么需要数据访问层?

(1)由于涉及到多种异构数据库平台,数据访问复杂性增加,不宜与业务逻辑混合在一起

(2)数据管理变复杂之后,需要使用的代码量增加,分单独层次有利于让逻辑更清晰。

(3)业务逻辑应以相同的方式应对异构的数据库,此时需要单独的数据访问层屏蔽差异性。 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值