食堂就餐卡系统架构设计

前言

本文是一篇关于架构师训练营学习课后作业的文章,文章内容为食堂就餐卡系统架构设计文档,旨在记录如何编写系统架构设计文档,本文也可以作为日后架构设计文档模板。

架构设计文档是给除自己之外的人看,画图需要有层次,内容应自顶向下,从系统部署图架构开始,然后依次时序图(系统级或模块级的交互场景)、活动图(关键业务的交互过程),之后是子系统(或块系统模块)内的组件图、序列图,状态图、类图等等,看上去是由粗到细,由浅入深,每个图阐述的内容要简洁、清晰,这需要在平时实践中不断去练习。

1、设计概述

食堂就餐卡系统是使用信息技术和自动控制技术的计算机网络系统,它的使用对于加强公司后勤服务的信息化建设有重要作用,承担着公司提高服务质量、管理水平和经济效益的目标任务。

1.1、功能概述

系统主要功能包括消费者管理、就餐卡管理、查询功能、营业汇总和系统维护,使用者包括消费者、服务员和管理员。主要功能详情如下:

  • 消费者管理:消费者注册、绑卡、缴费;
  • 就餐卡管理:开户、发卡、充值;
  • 查询功能:对每一次消费情况进行实时记录,可查询卡内余额或消费记录;
  • 营业汇总:自动汇总消费数据,生成消费情况统计报表,并支持报表打印;

1.2、非功能约束

系统未来预计一年用户量达到 10000 人,日刷卡量达到 30000,为不影响消费者正常就餐,提升就餐刷卡体验,系统需要达到以下性能目标:

  • 刷卡扣款性能目标:平均响应时间 < 150 ms,95% 响应时间 < 300ms,单机 TPS > 200;
  • 查询性能目标:平均响应时间 < 100 ms,95% 响应时间 < 150ms,单机 TPS > 300;
  • 充值性能目标:平均响应时间 < 200 ms,95% 响应时间 < 400ms,单机 TPS > 100;
  • 汇总统计性能目标:平均响应时间 < 1000 ms,95% 响应时间 < 2000ms,单机 TPS > 50;
  • 系统核心功能可用性目标:> 99.98%;
  • 系统案例目标:系统可拦截拒绝服务攻击、口令破解攻击,密码数据散列加密,数据传输对称加密;
  • 数据持久化目标:> 99.99%,

2、系统部署图与整体设计

系统上线时预计部署 3 台物理机,2 个子系统,即就餐卡管理系统和就餐卡报表系统。和公司财务系统及 1 个外部第三方系统进行交互。

2.1、系统部署图

系统部署图
系统部署图

就餐卡管理系统的功能职责为消费者管理、就餐卡管理和查询,部署 2 台服务器,依赖公司财务系统和第三方支付系统,实现消费者注册缴费、就餐卡发卡充值、余额查询以及消费记录查询等功能。

就餐卡报表系统的功能职责为营业汇总,部署 1 台服务器,依赖就餐卡管理系统,实现自动汇总消费数据,生成消费情况统计报表,并支持报表打印等功能。

2.2、消费者缴费场景-就餐卡管理系统序列图

缴款时序图
缴款时序图
  • 缴款时,就餐卡管理系统发起请求支付到第三方支付系统,第三方支付系统先验证支付请求合法性,然后生成加密的支付信息,再将该支付消息返回给就餐卡管理系统,最后就餐卡管理系统将获取到的支付信息解密,生成二维码用于消费者扫码支付;
  • 消费者使用第三方支付客户端扫码上述二维码进行扫码充值,充值成功后,第三方支付系统将返回充值结果给支付客户端,同时返回支付结果给就餐卡管理系统;
  • 就餐卡管理系统对支付结果进行处理,将金额充值到就餐卡,充值成功后,异步发送财务消息给公司财务系统,公司财务系统收到消息后,更新公司财务相关信息。

2.3、消费者缴费场景-就餐卡管理系统活动图

系统活动图
系统活动图

如图所示:

  • 缴款开始时,就餐卡管理系统发起请求支付,第三方支付系统接到请求支付后,生成相关支付信息返回,就餐卡管理系统收到该信息后,将该信息生成支付二维码,等待消费者扫码充值;
  • 系统通过第三方回调信息判断消费者是否扫码,若消费者已扫码充值,则将充值金额更新到就餐卡,同时更新财务信息,缴款流程结束;
  • 若消费者未扫码充值,一定时间后进行超时处理,缴款流程结束。

3、就餐卡管理系统设计

就餐卡管理系统的主要功能职责为消费者管理、就餐卡管理和查询,其中主要包含了前端组件、后端模块和充值组件。

3.1、就餐卡管理系统组件图

系统组件图
系统组件图

就餐卡管理系统包含 3 个组件:

  • 前端组件的功能主要是用于用户交互,需要依赖后端模块完成业务逻辑处理,消费者注册、缴费和查询请求主要通过前端组件完成;
  • 后端模块的功能主要用于业务逻辑处理,是就餐卡管理系统的核心组件;
  • 充卡组件的功能主要用于对就餐卡金额烧入,需要依赖后端模块完成充值处理;

3.1.1、用户缴费组件序列图

组件序列图
组件序列图

对于用户缴费,首先用户在前端组件发起缴费后,然后前端组件调用后端模块充值接口,用户支付一定金额后,后端模块对就餐卡余额信息进行处理,处理完成后,再调用充卡组件的充卡方法,将金额烧入就餐卡。

3.1.2、用户缴费组件活动图

组件活动图
组件活动图

3.2、后端模块设计

(略)

3.2.1、后端模块类图

(略)

3.2.2、场景 A 类序列图

(略)

3.2.3、对象 1 状态图

(略)

(2020-6-12更新)

以下是几份不错的作业:

  • https://xie.infoq.cn/article/c5146d9e0e372df3cd84decb9
  • https://xie.infoq.cn/article/5934bab0610dfb191611472d9
  • https://xie.infoq.cn/article/8b6e4a6ec85e19d867578bf4f

《食堂就餐卡系统架构设计》的相关评论

发表评论

必填项已用 * 标记,邮箱地址不会被公开。