模拟试题II 下午案例分析
软考系统架构设计师 | 模拟题 II 案例 形式:5 道案例题,每题 25 分,共 75 分 及格线:45 分 考试时间:与上午共用 150 分钟 必答:5 道全答(无选答)
试题一:C/S 与 B/S 混合架构 + 数据中心设计(25 分)
背景
某大中型企业在全国各城市共有 15 个左右的分支机构,这些机构已经建设了关系型数据库管理系统,每天负责独立地处理本区域内的业务并实时存储业务数据。PH 软件公司承接了该大中型企业信息管理系统的升级改造开发任务。
部分系统需求:
- 开发一个网络财务程序,使各地员工能在 Internet 上通过 VPN 技术进行财务单据报销和处理
- 加强管理,实现对下属分支机构业务数据的异地存储备份,保证数据的安全及恢复,同时对全国业务数据进行挖掘分析,拟在该企业总部建设数据中心
方案对比:
| 角色 | 架构风格 | 关键特征 |
|---|---|---|
| 许工 | C/S | 各分支机构财务部安装软件客户端,连接到总公司财务部主机;外地出差员工也需装客户端 |
| 郭工 | B/S | 各分支机构及出差员工通过 Windows 自带 IE 浏览器连接到总公司财务部主机 |
最终专家采用 C/S 和 B/S 相结合的混合架构。
问题 1(8 分)
结合你的系统架构经验,请用 400 字以内的文字简要讨论 C/S 和 B/S 两种架构风格各自的优点和缺点。
参考答案:
C/S 架构风格的优点:
- 客户机应用程序与服务器程序分离,二者的开发既可以分开进行,也可以同时进行
- 技术成熟,允许网络分布操作,交互性强,具有安全的存取模式
- 网络压力小,响应速度快,有利于处理大量数据
- 模型思想简单,易于人们理解和接受
C/S 架构风格的缺点:
- 客户机与服务器的通信依赖于网络,服务器的负荷过重
- 无法实现快速部署和安装,维护工作量大,升级困难
- 开发成本较高,客户端程序设计复杂,灵活性差
- 用户界面风格不一,软件移植和数据集成困难
- 数据库的安全性因客户机程序直接访问而降低
B/S 架构风格的优点:
- 易于部署、维护和升级
- 具有良好的开放性和可扩充性,可应用在广域网,方便信息的全球传输、查询和发布
- 可跨平台操作,无须开发客户端软件
- 通过 JDBC 等数据库连接接口,提高了动态交互性、服务器的通用性与可移植性
B/S 架构风格的缺点:
- 数据的动态交互性不强,不利于 OLTP 应用
- 数据查询等响应速度较慢
- 系统的安全性较难以控制
问题 2(8 分)
结合你的系统架构经验,请用 600 字以内的文字简要说明该工程项目采用 C/S 和 B/S 相结合的混合架构风格的设计要点及其优点。
参考答案:
设计要点:
- 在该企业总部局域网上部署财务 Web 服务器及其相关的数据库服务器,两种服务器之间采用 C/S 架构
- 总部局域网上提供 C/S 和 B/S 两种并存的架构风格,根据不同的应用需求和客户需求进行灵活选择
- 若项目资金充裕,可在各分支机构局域网中也采用类似于企业总部的部署风格;若资金不足,则在各分支机构财务部门局域网中采 C/S 架构,部署应用服务器及相关的数据库服务器,然后将集中处理的后期财务数据通过 VPN 技术上传至总部局域网的相应服务器中
- 外出差的员工和各分支机构的普通员工可通过 VPN 技术访问企业总部局域网上的 Web 服务器,查看相关的信息
C/S 和 B/S 混合架构的优点:
- 充分发挥了 B/S 与 C/S 体系结构的优势,弥补了二者的不足
- 客户请求和信息发布采用 B/S 架构,保持了瘦客户端的优点,客户机只利用浏览器即可完成所有的应用需求
- 数据库的请求和响应操作采用 C/S 架构,通过在 Web 应用程序和数据库之间建立 ODBC/JDBC 连接来完成数据库的连接和请求响应,能完成大量数据的批量录入请求
- 系统的部署、维护及数据更新方便,不存在完全采用 C/S 结构带来的客户端维护工作量大等缺点
- 将服务器端划分为 Web 服务器和 Web 应用程序两部分。Web 应用程序采用组件技术实现三层体系结构中的商业逻辑部分,达到封装源代码、保护知识产权的目的
- 对原基于 C/S 架构的应用,只需开发用于发布的 Web 界面,就能升级到这种混合架构系统中,从而最大限度地保护了原有投资
问题 3(9 分)
为保证各分支机构可靠、高效地向数据中心汇总业务数据,避免单点故障,对该企业总部数据中心架构进行设计时,应该采用哪些相关的技术?
参考答案(包含但不限于以下内容):
- 采用双链路连接 Internet 的备份方式
- 对数据中心的数据库服务器采用双机冗余热备方式(或多机集群 Cluster 和数据库并行处理技术等)
- 对存储设备采用 RAID10 级别(或全冗余的 SAN 结构,或全冗余的存储结构)等
试题二:基于边缘计算的智能门禁系统(25 分)
背景
某公司拟开发基于边缘计算的智能门禁系统,用于园区、新零售、工业现场等存在来访、被访业务的场景:
- 来访者在线提前预约,将个人信息记录在后台
- 被访者在系统中通过请求
- 来访者到访时"刷脸"通过门禁,无须其他验证
- 系统管理员可对正在运行的门禁设备进行管理
项目组讨论:
- 张工(业务):本系统可由访客注册模块、模型训练模块、端侧识别模块与设备调度平台模块等 4 项功能组成
- 李工(技术):使用 Flask 框架与 SSM 框架为基础来开发后台服务器,将开发好的系统通过 Docker 进行部署,并使用 MQTT 协议对 Docker 进行管理
问题 1(8 分)
请简述边缘计算的特点有哪些。
参考答案:
连接性:所连接物理对象的多样性及应用场景的多样性,需要边缘计算具备丰富的连接功能,如各种网络接口、网络协议等。
数据第一入口:边缘计算拥有大量、实时、完整的数据,可基于数据全生命周期进行管理与价值创造,将更好地支撑预测性维护、资产效率与管理等创新应用。
约束性:边缘计算产品需适配工业现场相对恶劣的工作条件与运行环境。在工业互联场景下,对边缘计算设备的功耗、成本、空间也有较高的要求。边缘计算产品需要考虑通过软硬件集成与优化,以适配各种条件约束,支撑行业数字化多样性场景。
分布性:边缘计算实际部署天然具备分布式特征。这要求边缘计算支持分布式计算与存储、实现分布式资源的动态调度与统一管理、支撑分布式智能、具备分布式安全等能力。
问题 2(5 分)
边缘计算与云计算的区别与联系是什么?
参考答案:
区别:
- 云计算擅长全局性、非实时、长周期的大数据处理与分析,能够在长周期维护、业务决策支撑等领域发挥优势
- 边缘计算更适用局部性、实时、短周期数据的处理与分析,能更好地支撑本地业务的实时智能化决策与执行
联系:
- 边缘计算与云计算之间不是替代关系,而是互补协同关系,边云协同将放大边缘计算与云计算的应用价值
- 边缘计算既靠近执行单元,也是云端所需高价值数据的采集和初步处理单元,可以更好地支撑云端应用
- 反之,云计算通过大数据分析优化输出的业务规则或模型可以下发到边缘侧,边缘计算基于新的业务规则或模型运行
问题 3(12 分)
简述边缘计算与云计算的协同能力有哪些。
参考答案:
资源协同:边缘节点提供计算、存储、网络、虚拟化等基础设施资源、具有本地资源调度管理能力,同时可与云端协同,接受并执行云端资源调度管理策略,包括边缘节点的设备管理、资源管理以及网络连接管理。
数据协同:边缘节点主要负责现场/终端数据的采集,按照规则或数据模型对数据进行初步处理与分析,并将处理结果以及相关数据上传给云端;云端提供海量数据的存储、分析与价值挖掘。边缘与云的数据协同,支持数据在边缘与云之间可控地有序流动,形成完整的数据流转路径,高效低成本地对数据进行生命周期管理与价值挖掘。
智能协同:边缘节点执行推理,实现分布式智能;云端开展模型训练,并将模型下发边缘节点。
应用管理协同:边缘节点提供应用部署与运行环境,并对本节点多个应用的生命周期进行管理调度;云端主要提供应用开发、测试环境,以及应用的生命周期管理能力。
业务管理协同:边缘节点提供模块化、微服务化的应用/数字孪生/网络等应用实例;云端主要提供按照客户需求实现应用/数字孪生/网络等的业务编排能力。
服务协同:边缘节点按照云端策略实现部分 ECSaaS 服务,通过 ECSaaS 与云端 SaaS 的协同实现面向客户的按需 SaaS 服务;云端主要提供 SaaS 服务在云端和边缘节点的服务分布策略,以及云端承担的 SaaS 服务能力。
试题三:宇航嵌入式设备软件架构(TLS 三层栈)(25 分)
背景
某公司承担了一项宇航嵌入式设备的研制任务。本项目除对硬件设备环境有很高要求外,还要求支持以下功能:
- 设备由多个处理机模块组成,需要时外场可快速更换(即 LRM 结构)
- 应用软件应与硬件无关,便于软硬件的升级
- 由于宇航嵌入式设备中要支持不同功能,系统应支持完成不同功能任务间的数据隔离
- 宇航设备可靠性要求高,系统要有故障处理能力
公司接到任务后进行反复论证,提出三层栈(TLS)软件总体架构(图 3.1),并将软件设计工作交给李工。
问题 1(8 分)
用 150 字以内的文字,说明公司制订的 TLS 软件架构的层次特点,并针对上述功能需求(1)~(4),说明架构中各层的内涵。
参考答案:
TLS 结构框架的主要特点:
- 应用软件仅与操作系统服务相关,不直接操作硬件
- 操作系统通过模块支持原软件访问硬件,可与具体硬件无关
- 模块支持层将硬件抽象成标准操作
- 通过三层栈的划分可实现硬件的快速更改与升级,应用软件的升级不会引起硬件的变更
TLS 结构框架各层的内涵:
- 应用层:主要完成宇航设备的具体工作,由多个功能任务组成,各功能任务间的隔离由操作系统层实现
- 操作系统层:实现应用软件与硬件的隔离,为应用软件提供更加丰富的计算机资源服务。操作系统为应用软件提供标准的 API 接口(如 POSIX),确保了应用软件的可升级性
- 模块支持层:为操作系统管理硬件资源提供统一的管理方法,用一种抽象的标准接口实现软件与硬件的无关性,达到硬件的升级要求,便于硬件的外场快速更换
问题 2(10 分)
在 TLS 软件架构的基础上,关于选择哪种类型的嵌入式操作系统问题,李工与总工程师发生了严重分歧。
- 李工:宇航系统是实时系统,操作系统的处理时间越快越好,隔离意味着以时间为代价,没有必要,建议选择类似于 VxWorks 5.5 的操作系统
- 总工程师:应用软件间隔离是宇航系统的安全性要求,宇航系统在选择操作系统时必须考虑这一点,建议选择类似于 Linux 的操作系统
请说明两种操作系统的主要差异,完成表 3.1 中的空(1)~(5),并针对本任务要求,用 200 字以内的文字说明你选择操作系统的类型和理由。
参考答案:
| 比较类型 | VxWorks 5.5 | Linux |
|---|---|---|
| 工作方式 | 操作系统与应用程序处于同一存储空间 | (1)操作系统与应用程序处于不同的存储空间 |
| 多任务支持 | 支持多任务(线程)操作 | (2)支持多进程、多线程操作 |
| 实时性 | (3)硬实时系统 | 实时系统 |
| 安全性 | (4)任务间无隔离保护 | (5)支持进程间隔离保护 |
| 标准 API | 支持 | 支持 |
我选择类似于 Linux 的嵌入式操作系统的理由:
- Linux 操作系统是一种安全性较强的操作系统。内核工作在系统态,应用软件工作在用户态,可以有效防止应用软件对操作系统的破坏
- Linux 操作系统调度的最小单位是线程,线程归属于进程,进程具有自己独立的资源。进程通过存储器管理部件(MMU)实现多功能应用间隔离
- 嵌入式 Linux 操作系统支持硬件抽象,可有效实现 TLS 结构,并将硬件抽象与操作系统分离,可方便地实现硬件的外场快速更换
问题 3(7 分)
故障处理是宇航系统软件设计中极为重要的组成部分。故障处理主要包括故障监视、故障定位、故障隔离和系统容错(重组)。用 150 字以内的文字说明嵌入式系统中的故障主要分哪几类?并分别给出两种常用的故障滤波算法和容错算法。
参考答案:
1)嵌入式系统中的故障主要分为:
- 硬件故障:如 CPU、存储器和定时器等
- 应用软件故障:如数值越界、异常和超时等
- 操作系统故障:如越权访问、死锁和资源枯竭等
2)滤波算法(任选 2 个):
- 门限算法
- 递减算法
- 递增算法
- 周期滤波算法
3)容错算法(任选 2 个):
- N+1 备份
- 冷备
- 温备
- 热备
试题四:Oracle 数据库性能优化(25 分)
背景
某大中型企业采用 Oracle 数据库建立一个经济信息统计方面的大型数据库应用系统。尽管配置了比较良好的硬件和网络环境,但该数据库应用系统实施后的整体性能表现较差。特别是随着业务量与信息量的迅速扩大,数据库系统的存取速度显著减慢,存储效率也明显下降。
该企业通过反复实践与摸索,并邀请数据库专家一起讨论,认为可以从以下 4 个方面进一步优化数据库应用系统:
- 由于数据库应用中最主要的查询与修改数据操作大多需通过 I/O 来完成,因此需要通过调整服务器配置(即对硬件设备进行升级)、操作系统配置与数据库管理系统的有关参数,优化系统的 I/O 性能,尤其是改进磁盘 I/O 的效率与性能
- 优化"索引"的建立与使用机制,尽可能提高数据查询的速度或效率
- 合理使用聚类(Cluster),改进查询响应时间和系统的综合性能。其中,“聚类"是指把单独组织的,但在逻辑上经常需要连接的,较为稳定的几个基本表聚集在一起(在物理上实现邻近存放),可以显著减少数据的搜索时间,从而提高性能
- 对应用系统中使用的 SQL 语句进行调优,针对每条 SQL 语句都建立对应的索引等
问题 1(13 分)
在该企业所邀请的数据库专家讨论意见中,针对每条 SQL 语句都建立索引的建议是否合适?请简要说明理由。
参考答案:
不适当,理由如下:
- 如果建立索引不当,数据库管理系统将不利用已经建立的索引,而采取全表扫描
- 当更新操作成为系统瓶颈,因为每次更新操作会重建表的索引,则需要考虑删除某些索引
- 应该针对不同应用情况选择适当的索引类型。例如,如果经常使用范围查询,则 B 树索引比散列索引更加高效
- 应该将有利于大多数数据查询和更新的索引设为聚类索引
- 需要对建立的索引进行实际的测试,因为索引的使用是由数据库管理系统(数据库优化器)决定的
问题 2(12 分)
结合你的经验,请列举出 4 条 SQL 语句优化的基本策略。
参考答案:
SQL 语句优化的常见策略如下(包含但不限于以下内容,列举出其中 5 个小点即可,每小点 1 分):
- 建立物化视图或尽可能减少多表查询
- 以不相干子查询替代相干子查询
- 只检索需要的列
- 用带 IN 的条件子句等价替换带 OR 的子句
- 经常提交 COMMIT,以尽早释放锁
- 避免嵌套的游标(Cursor)和多重循环等
试题五:Web 系统架构方案对比 + O/R 映射 + 性能优化(25 分)
背景
E-Mall 是一家电子商务公司,其主要业务是在线购物,包括书籍、服装、家电和日用品等。随着公司业务规模不断增大,公司决策层决定重新设计并实现其网上交易系统,公司负责系统开发的王工和李工分别给出了两种不同的设计方案(图 5.1 和图 5.2)。
公司的架构师和开发者针对这两种设计方案,从服务器负载情况、业务逻辑的分离性、系统可靠性、实现简单性等方面进行讨论与评估,综合考虑最终采用了李工给出的方案。
问题 1(8 分)
请分析比较王工、李工两种方案的优点和不足,完成下表中的空白部分。
| 方案\评价因素 | 王工建议的体系结构方案 | 李工建议的体系结构方案 |
|---|---|---|
| 服务器负载 | Web 服务器需要同时处理业务逻辑与数据库访问,负担较重 | (1) |
| 业务逻辑的分离性 | (2) | 采用多个应用服务器专门进行业务逻辑处理,做到业务逻辑与其他代码分离 |
| 系统可靠性 | 多处采用单台 Web 服务器,整个系统的可靠性较差 | (3) |
| 实现简单性 | 主要采用 JSP、ASP 等脚本语言实现系统,比较简单 | (4) |
参考答案:
| 方案\评价因素 | 王工建议的体系结构方案 | 李工建议的体系结构方案 |
|---|---|---|
| 服务器负载 | Web 服务器需要同时处理业务逻辑与数据库访问,负担较重 | (1)Web 服务器处理用户请求,应用服务器处理业务逻辑与数据库访问,负载较为均衡 |
| 业务逻辑的分离性 | (2)业务逻辑与数据库访问都位于 Web 服务器中,业务与逻辑没有分离 | 采用多个应用服务器专门进行业务逻辑处理,做到业务逻辑与其他代码分离 |
| 系统可靠性 | 多处采用单台 Web 服务器,整个系统的可靠性较差 | (3)采用多台应用服务器,系统的可靠性较高 |
| 实现简单性 | 主要采用 JSP、ASP 等脚本语言实现系统,比较简单 | (4)需要将脚本语言与面向对象编程语言相结合,相对复杂 |
问题 2(9 分)
对数据库的访问是该系统开发中需要特别注意的一个问题,O/R 映射是一种常用的数据库访问编程技术。请用 200 字以内的文字说明 O/R 映射的含义,并指出采用 O/R 映射的 3 个主要好处。
参考答案:
O/R 映射指的是对象/关系映射,是一种编程技术,将关系数据库中的关系型数据与面向对象编程语言中类型系统定义的数据进行格式转换。
采用对象/关系映射主要有 3 点好处:
- 可以将业务逻辑与数据逻辑分离
- 可以使得开发人员采用面向对象的方式访问底层关系型数据库
- 能够做到上层应用与底层的具体数据库无关,两者解耦合
问题 3(8 分)
性能是 Web 应用系统的一个重要质量属性。请用 200 字以内的文字说明 3 个主要影响 Web 应用系统性能的因素,针对每个因素提出解决方案以提高系统性能。
参考答案:
影响 Web 应用系统性能的 3 个主要因素分别是:
数据库的连接与销毁:可以采用数据池的方式缓存数据库连接,实现数据库连接复用,提高系统的数据访问效率
构件或中间件的加载与卸载:可以采用分布式对象池的方式缓存创建开销大的对象,实现对象复用,用以提高效率
线程的创建与销毁:可以采用线程池的方式缓存已经创建的线程,提高系统的反应速度