架构师训练营 - week1 - 食堂就餐系统设计
功能概述
对需求的分解归类,形成下面用例图
消费者可以完成注册用户、缴费和查询余额。
管理员可以查询消费和各个维度的统计消费。
服务人员通过收款机可以生成消费,在生成消费前,需要使用查询余额确认是否足够支付消费。
系统部署图
部署图描述了最终系统构建完成时结果。
首先管理人员通过浏览器,通过发送 HTTP 请求给管理中心中央服务器,登录到管理网页,完成所需的操作。
收款机内嵌了业务驱动组件,完成就餐消费涉及的通信管理、硬件驱动和业务实现。收款机长连接管理中心中央服务器,通过基于 TCP 自定义协议保证消息的可靠性和安全性。
管理中心中央服务器中,就餐系统负责协议解析,业务处理和数据模型维护。数据库组件负责数据的持久化。
就餐系统的组件图
对部署图中的就餐系统进一步细分,形成下面的就餐系统组件图
首先,最终交付给用户的是 war 形式的部署构件。主要有主控模块和Web 静态页面组成。Web 静态页面提供给管理员页面展示使用,同时需要的展示控制命令发送给主控模块。主控模块同时接收 Http 请求和 TCP 请求作为输入。HTTP 请求资金交给主控模块实现(main.cpp),调用相应的接口(比如管理员需要的统计消费),业务实现组件负责具体的接口实现,同时业务实现组件调用相关的数据模型组件,完成数据模型的提取(例如消费者相关信息的提取,消费者的身份,余额等信息)
查询余额的组件时序图
在上面就餐系统的组件图基础上,针对重要需求(消费者将卡插入收款机则显示卡上余额)进行分析,形成下面的组件时序图
消费者将卡插入收款机中。收款机的驱动组件调用硬件读取卡片消费者身份信息,进行协议编码发送查询余额请求。由 TCP 方式发到中央服务器
中央服务器直接转发请求给主控组件,主控组件接到请求后调用通讯控制组件,完成对协议解析,生成命令对象。
主控组件根据命令对象调用相应的接口获取应答结果。具体的接口将由业务实现组件实现。
业务实现组件调用数据模型组件获取消费者数据,最终返回消费者的余额信息。
主控模块在接到业务实现模块的应答后,再次调用通信控制组件对应答进行编码,通过 TCP 返回给收款机
收款机业务驱动组件对应答进行解析,驱动硬件进行界面显示,完成对消费者余额显示。
版权声明: 本文为 InfoQ 作者【month】的原创文章。
原文链接:【http://xie.infoq.cn/article/ed5620c502ab11c0d2f5958e4】。文章转载请联系作者。
评论