架构案例2022(四十二)

  • 促销管理系统

某电子商务公司拟升级其会员与促销管理系统,向用户提供个性化服务,提高用户的粘性。在项目立项之初,公司领导层一致认为本次升级的主要目标是提升会员管理方式的灵活性,由于当前用户规模不大,业务也相对简单,系统性能方面不做过多考虑,新系统除了保持现有的四级固定会员制度外,还需要根据用户的消费金额、偏好、重复性等相关特征动态调整商品的折扣力度,并支持在特定的活动周期内主动筛选与活动主题高度相关的用户集合,提供个性化的打折促销活动。

在需求分析与架构设计阶段,公司提出的需求和质量属性描述如下:

(a)管理员能够在页面上灵活设置折扣力度规则和促销活动逻辑,设置后即可生效;

(b)系统应该具备完整的安全防护措施,支持对恶意攻击行为进行检测与报警;

(c)在正常负载情况下,系统应在0.3秒内对用户的界面操作请求进行响应;

(d)用户名是系统唯一标识,要求以字母开头,由数字和字母组合而成,长度不少于6个字符。

(e)在正常负载情况下,用户支付商品费用后在3秒内确认订单支付信息;

(f)系统主站点电力中断后,应在5秒内将请求重定向到备用站点;

(g)系统支持横向存储扩展,要求在2人天内完成所有的扩展与测试工作;

(h)系统宕机后,需要在10秒内感知错误,并自动启动热备份系统;

(i)系统需要内置接口函数,支持开发团队进行功能调试与系统诊断;

(j)系统需要为所有的用户操作行为进行详细记录,便于后期查阅与审计;

(k)支持对系统的外观进行调整和配置,调整工作需要在4人天内完成。

在对系统需求、质量属性描述和架构特性进行分析的基础上,系统架构师给出了两种候选的架构设计方案,公司目前正在组织相关专家对系统架构进行评估。

【问题1】(12分)

在架构评估过程中,质量属性效用树 (utility tree)是对系统质量属性进行识别和优先级排序的重要工具。请将合适的质量属性名称填入图1-1中( )、( )空白处,并选择题干描述的(a)~(k)填入( )~( )空白处,完成该系统的效用树。

答案:

  1. 安全性
  2. 可修改性
  3. E
  4. J
  5. H
  6. K

【问题2】(13分)

针对该系统的功能,李工建议采用面向对象的架构风格,将折扣力度计算和用户筛选分别封装为独立对象,通过对象调用实现对应的功能:王工则建议采用解释器(interpreters) 架构风格,将折扣力度计算和用户筛选条件封装为独立的规则,通过解释规则实现对应的功能。请针对系统的主要功能,从折扣规则的可能改性、个性化折扣定义灵活性和系统性能三个方面对这两种架构风格进行比较与分析,并指出该系统更适合采用哪种架构风格。

答案:

灵活性,解释器优于面向对象,因为解释器架构可以通过解释器来解析,动态的适配对象需要的规则。

可修改性,解释器优于面向对象,因为解释器是独立的语法规则,只需要新增规则和修改规则就好。

性能,面向对象优于解释器,因为不需要再次解析,对象和规则在一个整体一起运行。

综合考虑,这个场景解释器架构更适合规则系统。

  • 数据库缓存

某大型电商平台建立了一个在线 B2B 商店系统,并在全国多地建设了货物仓储中心,通过提前备货的方式来提高货物的运送效率。但是在运营过程中,发现会出现很多跨仓储中心调货从而延误货物运送的情况。为此,该企业计划新建立一个全国仓储货物管理系统,在实现仓储中心常规管理功能之外,通过对在线 B2B商店系统中订单信息进行及时的分析和挖掘,并通过大数据分析预测各地仓储中心中各类货物的配置数量,从而提高运送效率,降低成本。

当用户通过在线 B2B商店系统选购货物时,全国仓储货物管理系统会通过该用户所在地址、商品类别以及仓储中心的货物信息和地址,实时为用户订单反馈货物起运地(某仓储中心)并预测送达时间。反馈送达时间的响应时间应小于1秒。

为满足反馈送达时间功能的性能要求,设计团队建议在全国仓储货物管理系统中采用数据缓存集群的方式,将仓储中心基本信息、商品类别以及库存数量放置在内存的缓存中,而仓储中心的其它商品信息则存储在数据库系统。

【问题1】(9分)

设计团队在讨论缓存和数据库的数据一致性问题时,李工建议采取数据实时同步更新方案,而张工则建议采用数据异步准实时更新方案。

请用200字以内的文字,简要介绍两种方案的基本思路,说明全国仓储货物管理系统应该来用哪种方案,并说明采取该方案的原因。

答案:

实时同步更新则是在数据库更新的时候,缓存也一起更新掉。

准实时更新则是在数据库更新之后,把消息放到队列,异步消费更新缓存。

因为项目要求响应时间小于1秒,所以选择异步准实时更新更合适。

【问题2】(9分)

随着业务的发展,仓储中心以及商品的数量日益增加,需要对集群部署多个缓存节点,提高缓存的处理能力。李工建议采用缓存分片方法,把缓存的数据拆分到多个节点分别存储,减轻单个缓存节点的访问压力,达到分流效果。

缓存分片方法常用的有哈希算法和一致性哈希算法,李工建议采用一致性哈希算法来进行分片。请用200字以内的文字简要说明两种算法的基本原理,并说明李工采用一致性哈希算法的原因。

哈希算法是将key的值计算出哈希值,再把相同哈希值的key放入相同的缓存实例上,类似于取模的方式。

一致性哈希算法则有一个哈希环,把key值计算出哈希值,再通过哈希环顺时针查找,找到属于对应的实例。一致性哈希算法的效率更高。

【问题3】(7分)

全国仓储货物管理系统开发完成,在运营一段时间后,系统维护人员发现大量黑客故意发起非法的商品送达时间查询请求,造成了缓存击穿,张工建议尽快采用布隆过滤器方法解决。请用200字以内的文字解释布隆过滤器的工作原理和优缺点。

答案:

布隆过滤器会维护一个很长二进制集合,把所有可能查询的key都维护进去,当布隆过滤器返回不存在,则不需要去查询缓存和数据库。

优点:

  1. 内存占用小
  2. 没有维护key对应的真实值,数据安全
  3. 查询效率高

缺点:

  1. 可能存在误判
  2. 不能获取key对应值本身
  3. 一般情况下不能删除元素
  • 软件建设与设计

煤炭生产是国民经济发展的主要领域之一,其煤矿的安全非常重要。某能源企业拟

开发一套煤矿建设项目安全预警系统,以保护煤矿建设项目从业人员生命安全。本系统

的主要功能包括如下(a)~(h)所述。

(a)项目信息维护

(b)影响因素录入

(c)关联事故录入

(d)安全评价得分

(e)项目指标预警分析

(f)项目指标填报

(g)项目指标审核

(h)项目指标确认

【问题1】(9分)

王工根据煤矿建设项目安全预警系统的功能要求,设计完成了系统的数据流图,如

图2-1所示。请使用题干中描述的功能(a)~(h),补充完善空( )~( )处的内容,

并简要介绍数据流图在分层细化过程中遵循的数据平衡原则。

答案:

1到3,f,g,h

4,d

5,b

6则是e

父图和子图的输入/输出数据流必需平衡,父图的一条输入/输出流对应子图的一条输入输出流;父图的一条输入/输出流对应子图的多条,子图的多条数据流刚好对应父图这一条输入/输出流。

子图内部的输入/输出流也必须一一对应。

【问题2】(9分)

请根据【问题1】中数据流图表示的相关信息,补充完善煤矿建设项目安全预警系统总体ER图(见图2-2)中实体( )-( )的具体内容,将正确答案填在答题纸上。

答案:

  1. 管理员
  2. 项目经理
  3. 项目指标数据
  4. 项目信息
  5. 指标参数
  6. 事务及其影响因素

【问题3】(7分)

在结构化分析和设计过程中,数据流图和数据字典是常用的技术手段,请用200字

以内的文字简要说明它们在软件需求分析和设计阶段的作用。

答案:

数据流图在需求分析阶段主要是建立数据流图模型,完成需求分析。

在设计阶段为接口和模块的划分提供依据,在数据流图的基础上进行。

数据字典在需求分析和设计阶段主要是起到了统一的标准,可以确定数据在系统中完整性和一致性。具体要求各个列、相互参照、由描述内容检索名称、一致性校验和完整性校验。

四、web系统架构

某公司拟开发一套基于边缘计算的智能门禁系统,用于如园区、新零售、工业现场等存在来访、被访业务的场景。来访者在来访前,可以通过线上提前预约的方式将自己的个人信息记录在后台,被访者在系统中通过此请求后,来访者在到访时可以直接通过"刷脸"的方式通过门禁,无需做其他验证。此外,系统的管理员可对正在运行的门禁设备进行管理。

基于项目需求,该公司组建项目组,召开了项目讨论会。会上,张工根据业务需求并结合边缘计算的思想,提出本系统可由访客注册模块、模型训练模块、端侧识别模块与设备调度平台模块等四项功能组成,李工从技术层面提出该系统可使用 Flask 框架与SSM 框架为基础来开发后台服务器,将开发好的系统通过 Docker 进行部署,并使用MQTT 协议对 Docker 进行管理。

【问题1】(5分)

MQTT协议在工业物联网中得到广泛的应用,请用300字以内的文字简要说明MQTT协议。

答案:

MQTT是消息队列传输协议,主要应用场景是在网络不稳定或者有延迟的情况下,可以使用MQTT协议,

【问题2】(14分)

在会议上,张工对功能模块进行了更进一步的说明:访客注册模块用于来访者提交申请与被访者确认申请,主要处理提交来访申请、来访申请审核业务,同时保存访客数据,为训练模块准备训练数据集:模型训练模块用于使用访客数据进行模型训练,为端侧设备的识别业务提供模型基础;端侧识别模块在边缘门禁设备上运行,使用训练好的模型来识别来访人员,与云端服务协作完成访客来访的完整业务;设备调度平台模块用于对边缘门禁设备进行管理,管理人员能够使用平台对边缘设备进行调度管理与状态监控,实现云端协同。

图5-1给出了基于边缘计算的智能门禁系统架构图,请结合 HTTP 协议和 MQTT协议的特点,为图5-1中( 1)~( 6)处选择合适的协议:并结合张工关于功能模块的描述,补充完善图5-1中(7 )~(10 )处的空白。

答案:

  1. HTTP
  2. MQTT
  3. MQTT
  4. MQTT
  5. HTTP
  6. HTTP
  7. 端侧识别模块
  8. 云端服务模块模型训练模块
  9. 设备调度平台模块
  10. 训练模块访客注册模块

【问题3】(6分)

请用300字以内的文字,从数据通信、数据安全和系统性能等方面简要分析在传统云计算模型中引入边缘计算模型的优势。

答案:

数据安全方面提高了,因为边缘设备也会存储数据,不需要网络传递,网络只需要传递指令,安全更高,而且单点被黑客攻击不会导致全部不可用。

性能方面更好,因为云计算模型数据在一起,更方面分析,计算能力更强。

数据通信更方便,数据都在云上,效率更高。

相关推荐
天海华兮2 分钟前
mysql 去重 补全 取出重复 变量 函数 和存储过程
数据库·mysql
CV学术叫叫兽27 分钟前
一站式学习:害虫识别与分类图像分割
学习·分类·数据挖掘
天天扭码35 分钟前
五天SpringCloud计划——DAY2之单体架构和微服务架构的选择和转换原则
java·spring cloud·微服务·架构
gma9991 小时前
Etcd 框架
数据库·etcd
爱吃青椒不爱吃西红柿‍️1 小时前
华为ASP与CSP是什么?
服务器·前端·数据库
余生H1 小时前
transformer.js(三):底层架构及性能优化指南
javascript·深度学习·架构·transformer
凡人的AI工具箱1 小时前
15分钟学 Go 第 60 天 :综合项目展示 - 构建微服务电商平台(完整示例25000字)
开发语言·后端·微服务·架构·golang
Yz98762 小时前
hive的存储格式
大数据·数据库·数据仓库·hive·hadoop·数据库开发
苏-言2 小时前
Spring IOC实战指南:从零到一的构建过程
java·数据库·spring
运维&陈同学2 小时前
【zookeeper01】消息队列与微服务之zookeeper工作原理
运维·分布式·微服务·zookeeper·云原生·架构·消息队列