架构师训练营 - 第一周 - 食堂就餐卡系统架构设计
1. 设计概述
食堂就餐卡系统是一个集卡片管理、用户管理、交易管理、报表管理的管理系统,主要目的为了数字化员工在食堂就餐的体验,提高就餐效率。
1.1. 功能概述
系统的主要功能包括就餐卡管理、用户信息管理、用户充值消费管理、消费统计管理等功能,使用者包括食堂就餐人员、系统管理员、食堂收银服务员。
1.2. 非功能约束
系统未来预计⼀年⽤户量达到18W+左右,⽇订单量达到100W+。
1. 查询性能⽬标:平均响应时间<300ms,95%响应时间<500ms,单机TPS>100;
2. 下单性能⽬标:平均响应时间<800ms,95%响应时间<1000ms,单机TPS>30;
3. 性能⽬标:平均响应时间<800ms,95%响应时间<1000ms,单机TPS>30;
4. 系统核⼼功能可⽤性⽬标:>99.97%;
5. 系统安全性⽬标:系统可拦截XSS攻击、CSRF攻击、SQL注入攻击,用户不可横向越权。密码数据散列加密,客户端数据使用https对称加密,外部系统间通信对称加密;
数据持久化⽬标:针对用户保留近1年消费数据。
2. 系统部署图与整体设计
系统上线时预计部署28台docker实例,pos终端机10台,共4个子系统,2个公共基础组件,与外部三个第三方支付系统(微信、支付宝、银联)进行交互。
2.1 系统部署图
POS终端机主要运行收款机客户端软件,依赖用户管理系统、交易管理系统,并上报消费数据到报表管理系统,主要提供卡片消费扣款,余额显示功能。
API网关部署在外网,主要承载外网POS终端机的服务调用,进行服务路由的转发、鉴权、限流等功能,部署4台docker,保证高可用。
卡片管理系统部署在内网数据中心,部署4台docker和1个主mysql数据库和从mysql数据库,主要实现卡片注册、卡片注销等功能。
用户管理系统部署在内网数据中心,依赖卡片管理系统,部署4台docker和1个主mysql数据库和从mysql数据库,主要实现用户注册、用户身份管理、用户卡管理等功能。
交易管理系统部署在内网数据中心,依赖用户管理系统,卡片管理系统、报表管理系统、部署8台docker和1个主mysql数据库和从mysql数据库,主要实现用户消费、卡片充值、卡片余额查询、卡片扣款等功能。
报表管理系统部署在内网数据中心,依赖交易管理系统,部署4台docker和1对主从Oracle数据库,实现消费统计计算、消费流水打印等功能。
注册中心部署在内网数据中心,为无状态节点,部署4台docker,主要实现卡片系统、交易系统、用户管理系统、报表管理系统、API网关的服务注册与发现。
2.2 食堂就餐卡系统用例图
2.2.1 卡片管理系统用例图
2.2.2 用户管理系统用例图
2.2.3 交易管理系统用例图
2.2.4 报表管理系统用例图
2.3 食堂就餐卡系统组件图
就餐卡系统分为POS终端机(集成第三方支付SDK)、API网关、注册中心、卡片管理、用户管理、交易管理、报表管理共7个组件。POS终端机依赖API网关进行内部管理系统服务的调用,API网关依赖注册中心组件进行API服务的发现与调用。卡片管理组件主要进行卡片的注册与注销,不依赖与其他系统。用户管理组件主要进行用户的注册,身份管理,并进行用户与卡的关联,依赖于卡片管理组件。交易管理主要进行卡片的消费等一系列功能,依赖于用户管理组件、卡片管理组件。报表管理主要进行消费统计与打印,依赖交易管理组件的消费数据。
2.4 场景组件时序图
2.4.1 用户注册时序图
2.4.2 用户刷卡消费时序图
2.4.3 打印消费记录时序图
版权声明: 本文为 InfoQ 作者【坂田吴奇隆】的原创文章。
原文链接:【http://xie.infoq.cn/article/5f3b7aced3d0e444f62b572e3】。文章转载请联系作者。
评论