架构师训练营 -week14- 大作业 1
设计概述
本系统是为C2C快递提供支持的系统,是公司同城快递业务的核心系统。
功能概述
系统主要功能包括注册、下单、抢单,使用者包括用户与快递员。
用例图
用户端提供用户注册、下单以及查看订单进度等功能。
快递员端提供快递员注册认证、抢单以及同步位置等功能。
非功能约束
上线后三个月日单超过1万,未来预计一年后日单超过50万。
查询性能目标:平均响应时间<300ms,95%响应时间<500ms,单机TPS>100;
下单性能目标:平均响应时间<800ms,95%响应时间<1000ms,单机TPS>30;
抢单性能目标:平均响应时间<40s,95%响应时间<60s;
系统核心功能可用性目标:>99.97%
系统安全性目标:系统可拦截CSQR、DDOS攻击,密码数据散列加密,客户端数据HTTPS加密,外部系统间通信对称加密;
数据持久化目标:>99.999%;
系统部署图与整体设计
系统上线时,预计部署8台物理机,4个子系统,和多个外部第三方支付系统交互。
系统部署图
网关服务器负责负载均衡,部署2台服务器。
应用服务器负责核心业务,运行主系统、抢单系统、数据中心与财务系统,部署3台服务器。
Redis服务器与消息队列服务器合并部署1台服务器。
数据库采用主从复制,主数据库与从数据库分别部署,共需2台服务器。
系统组件图
主系统的功能职责为注册、接收订单、接收心跳包、提供数据查询接口。
抢单系统的功能职责为计算通知在30s内,距离用户5km内可参与抢单的快递员。
财务系统的功能职责为统计财务报表、计算利润、开发票等功能。
数据中心的功能职责为提供所有已完成单据的原始数据,作为数据仓库为大数据平台做基础。
抢单场景
活动图
用户在app上下单,提交至系统。
快递员通过app,每隔30s同步一次位置到系统。
系统接到单后,统计30s内在直线距离用户5km范围内需通知到的快递员后,发出抢单通知。
快递员抢单后,提交抢单人员信息(包括定位),系统计算快递员所在位置与用户的距离,通知用户已接单,并提示快递员在多少分钟内将到达。
时序图
用户在app上下单,提交至系统。
快递员通过app,每隔30s同步一次位置到系统。
系统接到单后,统计30s内在直线距离用户5km范围内需通知到的快递员后,发出抢单通知。
快递员抢单后,提交抢单人员信息(包括定位),系统计算快递员所在位置与用户的距离,通知用户已接单,并提示快递员在多少分钟内将到达。
订单状态图
版权声明: 本文为 InfoQ 作者【晓-Michelle】的原创文章。
原文链接:【http://xie.infoq.cn/article/dda94d0254bd51bde4aa943af】。未经作者许可,禁止转载。
评论