2024年下半年软考系统架构设计师案例分析题
(一)第一题(25分)
阅读以下关于面向质量属性的软件架构设计的叙述,回答问题1和问题2。
【说明】
某公司拟开发一个基于大语言模型的智能系统,该系统将通过多个大语言模型来协作处理用户提交的任务请求,任务求解过程的状态数据将被记录在任务板中,各个大语言模型根据任务板上任务的实时求解状态,来确定它们当前是否需要被调用以进一步处理该任务,并在处理完成之后将任务的最新状态更新到任务板上。
基于该系统的开发任务,公司召开项目讨论会。会上,项目组介绍了系统需求,主要包括:
(a) 系统可支持用户在任务板上查看任务的状态和结果,并允许用户多次调用大型语言模型以进一步优化处理结果。
(b) 系统可支持任务数据的导入导出,数据导入导出在1分钟内完成
c 在数据服务器发生故障时,系统应能够立刻切换到备份服务器,并保证数据同步,以确保系统的不间断的服务。
(d) 在系统正常负荷情况下,用户在任务板上查询任务状态和结果的响应时间应在2秒内。
(e) 系统应确保用户数据和操作记录的安全,防止未经授权的访问。
(f) 系统需要支持多语言接口,并提供查询词自动补全和搜索关联功能。
(g) 系统应支持扩容,以容纳更多的用户和任务。扩容需求的实现应在两名运维人员工作的情况下在5天内完成。
(h) 系统部署在云服务器上。当云服务器出现故障时,系统应在1分钟内检测出故障,并在1小时之内恢复。
(i) 系统支持根据用户任务类型调用相应的大语言模型对任务进行处理。
(j) 用户可以在任务板上搜索历史任务和结果,搜索结果应在3秒内返回。
【问题·1】(14分)
需求 | 功能性需求/具体质量属性需求名称 |
---|---|
(a) | 功能性 |
(b) | 1 |
c | 可靠性 |
(d) | 2 |
(e) | 3 |
(f) | 4 |
(g) | 5 |
(h) | 可用性 |
(i) | 6 |
(j) | 7 |
【问题2】(11分)
针对需求可用性需求(h),张工提出可采用ping/echo策略完成故障检测,但李工认为从系统资源利用率的角度出发,采用心跳策略完成故障检测更优。
(1)请分别说明如何采用ping/echo策略和心跳策略来完成可用性的故障检测;
(2)请解释李工认为心跳策略更优的原因。
【答案】
【问题1】
(1) 性能
(2) 性能
(3) 安全性
(4) 功能性
(5) 可修改性
(6) 功能性
(7) 性能
【问题2】
(1) ping/echo策略通过定期发送ping请求并等待响应来检测故障,而心跳策略则是通过定期交换心跳消息来确认服务状态。
(2) 李工之所以认为心跳策略相较于ping/echo策略更为优越,是因为心跳策略能够显著减少资源的消耗,它通过被监控组件主动发送简短的心跳消息来表明运行状态,无需监控组件频繁发送请求并等待回应。此外,心跳策略还能有效降低网络的负载,因为心跳消息通常较短且发送频率较低,对网络带宽的占用也相应减少。最后,心跳策略能够更快速地检测到故障或失联的节点,一旦节点出现故障或无法发送心跳消息,监控组件便能立即察觉并采取措施,从而提高了故障检测的效率。
(二)第二题(25分)
阅读下列关于数据库设计的说明,回答问题1至问题3。
【说明】
为了提升某购物网站的用户使用体验,采用数据库缓存技术将经常访问的商品信息存储在一个临时高速数据存储层中,这个临时存储层使得未来对这些数据的请求响应比通过访问主数据库更快。为了确保快速、及时获取最新数据,项目组决定采用缓存数据技术开展项目设计,经讨论,决定采用Cache-Aside策略作为缓存手段。
【问题1】(10分)
使用Cache-Aside缓存策略,当用户查询商品信息时,此请求会从应用程序服务器发送请求到数据库服务器,通过缓存系统处理,然后返回所请求的信息,请补充完善图1中(1)~(5)处的内容,协助设计师完成缓存系统中的数据读取模块的设计方案。
【问题2】(6分)
使用Cache-Aside缓存策略,当用户更新商品信息时,此请求会从应用服务器发至数据库服务器,并进行缓存处理,请补充完善图2中(1)和(2)处的内容,协助工程师完成缓存系统中的数据更新模块的设计方案。
图2 数据库缓存系统中的数据更新模块的设计方案
【问题3】(9分)
李工设计了多线程并发数据访问方案,采用线程1执行数据更新,线程2执行数据读取。王工认为这样的设计方案会出现数据库与缓存中的数据不一致现象,请说明李工所设计的方案为什么会出现数据库与缓存中的数据不一致的情况,并给出3种或以上的解决方案。
【答案】
【问题1】
(1) 读数据
(2) 缓存中没有数据
(3) 读数据
(4) 更新缓存
(5) 取得数据
【问题2】
(1) 写入数据
(2) 删除缓存
【问题3】
(1) 异步队列方式同步,可采用消息中间件处理
(2) 通过数据库插件完成数据同步
(3) 利用触发器进行缓存同步
(4) 锁机制
(三)第四题(25分)
Web Elasticsearch分词的商品推荐系统(微信小程序接入)
- Standard, Simple, Whitespace, Keyword分词引擎的特点差异(几种分词器怎么分词);
- 架构图填写,层,支持框架(14分8个空);
- RESTful架构是如何实现前后端分离的?
【答案】
【第1题】:
Standard分词器:是默认的分词器,对于英文,它按照单词进行切分,并将大写字母转换为小写;对于中文,则简单地将中文文本拆分为单个汉字。
Simple分词器:按照非字母字符(如标点符号、数字、特殊字符等)进行切分,同时会将大写字母转换为小写,并过滤掉这些非字母字符。
Whitespace分词器:仅仅按照空白字符(如空格、制表符等)进行切分,不会进行小写转换,也不会过滤掉任何字符(包括标点符号和数字)。
Keyword分词器:不进行任何切分,将输入的整个字符串作为一个单独的词(或称为“关键词”)来处理。
【第3题】:
RESTful架构通过定义资源、请求方式、响应格式以及前后端交互规范等关键点,实现了前后端的分离。这种架构使得前端和后端可以独立开发和维护,提高了开发效率和系统的可扩展性。