架构师训练营 - week1 - 食堂就餐系统设计

用户头像
month
关注
发布于: 2020 年 09 月 20 日

功能概述

对需求的分解归类,形成下面用例图

消费者可以完成注册用户、缴费和查询余额。

管理员可以查询消费和各个维度的统计消费。

服务人员通过收款机可以生成消费,在生成消费前,需要使用查询余额确认是否足够支付消费。



系统部署图

部署图描述了最终系统构建完成时结果。

首先管理人员通过浏览器,通过发送 HTTP 请求给管理中心中央服务器,登录到管理网页,完成所需的操作。

收款机内嵌了业务驱动组件,完成就餐消费涉及的通信管理、硬件驱动和业务实现。收款机长连接管理中心中央服务器,通过基于 TCP 自定义协议保证消息的可靠性和安全性。

管理中心中央服务器中,就餐系统负责协议解析,业务处理和数据模型维护。数据库组件负责数据的持久化。



就餐系统的组件图

对部署图中的就餐系统进一步细分,形成下面的就餐系统组件图



首先,最终交付给用户的是 war 形式的部署构件。主要有主控模块和Web 静态页面组成。Web 静态页面提供给管理员页面展示使用,同时需要的展示控制命令发送给主控模块。主控模块同时接收 Http 请求和 TCP 请求作为输入。HTTP 请求资金交给主控模块实现(main.cpp),调用相应的接口(比如管理员需要的统计消费),业务实现组件负责具体的接口实现,同时业务实现组件调用相关的数据模型组件,完成数据模型的提取(例如消费者相关信息的提取,消费者的身份,余额等信息)



查询余额的组件时序图

在上面就餐系统的组件图基础上,针对重要需求(消费者将卡插入收款机则显示卡上余额)进行分析,形成下面的组件时序图



  1. 消费者将卡插入收款机中。收款机的驱动组件调用硬件读取卡片消费者身份信息,进行协议编码发送查询余额请求。由 TCP 方式发到中央服务器

  2. 中央服务器直接转发请求给主控组件,主控组件接到请求后调用通讯控制组件,完成对协议解析,生成命令对象。

  3. 主控组件根据命令对象调用相应的接口获取应答结果。具体的接口将由业务实现组件实现。

  4. 业务实现组件调用数据模型组件获取消费者数据,最终返回消费者的余额信息。

  5. 主控模块在接到业务实现模块的应答后,再次调用通信控制组件对应答进行编码,通过 TCP 返回给收款机

  6. 收款机业务驱动组件对应答进行解析,驱动硬件进行界面显示,完成对消费者余额显示。

发布于: 2020 年 09 月 20 日 阅读数: 48
用户头像

month

关注

还未添加个人签名 2013.12.26 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营 - week1 - 食堂就餐系统设计