架构师训练营第一周 - 食堂就餐卡系统设计

作业一:食堂就餐卡系统设计

  系统中每个消费者都有一张卡,在管理中心注册缴费,卡内记着消费者的身份、余额。
  使用时将卡插入收款机则显示卡上金额,服务员按收款机上数字键,收款机自动计算并显示消费额及余额。
  管理中心的管理员监视每一笔消费,可打印出消费情况的相关统计数据。

请设计系统用例图,组件图,组件时序图,部署图。

作业二:根据当周学习情况,完成一篇学习总结

架构设计文档

1 设计概述

食堂就餐卡系统,是一个方便顾客就餐消费和食堂收款的系统。

通过脑图,梳理整体设计:
脑图.png

1.1 功能概述

系统功能包括:管理中心开卡注册、缴费、统计消费情况、收款机刷卡消费。
使用者包括:管理中心后台管理员、收款机(消费者、收银员操作时的实体对象)。

1.2 非功能约束

系统未来预计一年开卡数达到 5000 张,日订单量达到 200 单
1.查询性能目标:平均响应时间 < 300ms,95% 响应时间 < 500ms,单机 TPS > 100
2.消费性能目标:平均响应时间 < 1000ms,95% 响应时间 < 1500ms,单机 TPS > 30
3.系统核心功能可用性目标:> 99.99%
4.系统安全性目标:系统可拦截 XSS、SQL注入、DDOS攻击,使用 HTTPS 协议,系统间通信使用对称加密
5.数据持久化目标:99.9999%

2 系统部署图与整体设计

系统上线时预计部署2台物理机,做集群高可用,包含3个子系统。其中涉及卡操作,均需要与读卡器设备进行交互。

2.1 系统用例图

系统用例图.png

管理中心后台管理员:通过读卡器读取卡信息(在卡面ID不可修改的前提下,不依赖读卡器也行),通过与卡管理系统交互进行开卡操作,通过与交易系统交互完成缴费操作,通过与统计系统交互完成数据统计操作。
收款机:通过与卡管理系统交互读取卡绑定信息、余额信息,通过与交易系统交互完成收款与账户扣款。

2.2 系统部署图

部署图.png

卡管理系统的功能职责为:卡ID存储。顾客信息绑定、卡余额等均在系统中存储
交易系统的功能职责为:缴费、消费场景与余额相关的操作处理
统计系统的功能职责为:请求卡管理系统、交易系统,根据需要维度聚合出统计信息

2.3 卡注册场景时序图

卡注册场景时序图.png

注册时通过读卡器读取卡ID与卡管理系统交互,绑定注册人身份信息。开卡缴费,与交易系统通过 https 通信交互。
统计系统在任意时段,均可以请求卡管理系统与交易系统,并聚合出相关统计信息。

2.4 缴费场景时序图

缴费场景时序图.png

缴费时通过读卡器读取卡ID与卡管理系统交互,获取系统中卡余额并与交易系统交互,成功后修改卡余额。

2.5 消费场景时序图

消费场景时序图.png

消费时通过收款机读取卡ID与卡管理系统交互,获取系统中卡余额并显示。输入消费金额后,请求交易系统,成功后修改卡余额。

2.6 统计场景时序图

统计场景时序图.png

管理中心通过统计系统,调用交易系统获取交易数据,并根据需要的维度进行聚合展示。

3 卡管理系统设计

组件图.png

当前系统逻辑还较为简单,不需要过多的组件配合(当前系统虽拆分为3个,可在同一代码库内以模块拆分即可)。

3.1 卡类图

卡组件类图.png

类字段包含卡ID、顾客信息、卡余额,类方法包含开卡。

4 交易系统设计

4.1 交易类图

交易组件类图.png

类方法包含缴费、消费。

5 统计系统设计

5.1 统计类图

统计组件类图.png

类方法,当前仅需要统计消费情况。

发表新评论