极客大学架构师训练营 - 同城快递业务架构设计
题目
1. 设计概述
本系统是一个同城快递系统,同城快递系统是公司快递战略的核心系统,承担着公司的抢占快递市场目标任务。对用户收发快递的速度,用户体验都要有保障。用户、快递员账号的注册管理、管理员的系统维护,拉取系统数据不在此设计范围内。
1.1 功能概述
系统主要功能包括用户下单,快递员抢单,快递到指定目的地。常用功能如下:
用户下单。
快递员上报位置,30秒一次。
系统收用户请求,向快递员发通知。
快递员抢单,系统发地址。
收到快递后,快递状态显示为已收件。
送到目的地后,快递状态显示为已送达。
1.2 非功能约束
系统预计3个月后,日单超过1万,一年后,日单超过50万。
查询性能⽬标:平均响应时间<300ms,95%响应时间<500ms,单机TPS>100;
下单性能⽬标:平均响应时间<800ms,95%响应时间<1000ms,单机TPS>30;
性能⽬标:平均响应时间<800ms,95%响应时间<1000ms,单机TPS>30;
系统核⼼功能可⽤性⽬标:>99.97%;
系统安全性⽬标:系统可拦截DDOS、SQL注入攻击,密码数据散列加密,客户端数据 HTTPS加密,外部系统间通信对称加密;
数据持久化⽬标:>99.99999%。
1.3 用例图
用户的用例图如图所示。
快递员的用例图如图所示。
订单系统的用例图如图所示。
2. 系统部署图与整体设计
系统上线时预计部署100台物理机,分为订单服务、位置服务、抢单服务、消息推送三个子系统,和公司的现有大数据分析子系统交互,和外部的第三方支付系统交互。
2.1 系统部署图
订单服务子系统的功能职责为订单的处理,部署60台服务器,依赖位置服务子系统和抢单子系统,实现订单的创建、删除,修改,查询。
位置服务子系统的功能职责为同步快递员的位置,部署20台服务器,不依赖于其他子系统。
抢单子系统的功能职责为确定那个快递员得到了订单,依赖于订单子系统查询订单信息,依赖位置服务子系统提供具体位置。
消息推送系统负责分发指定的消息给用户或快递员。
因为是同城业务,快递寄送比较快,一般不超过一周,所以每个月都会把数据从MySQL备份到外存。这样,就可以确保MySQL的数据量不会太大。各服务器访问底层数据库或缓存的时候,需要同步。
2.2 订单状态图
状态图如下所示,深黄色为订单在用户,黄色为订单在订单管理中心,绿色为订单在快递员。
2.3 组件关系图
组件之间的关系如下图所示。
2.4 活动图
活动图如下所示。
2.5 时序图
时序图如下所示。
2.6 组织架构
项目管理 1人
架构师 1人
后端业务分组
位置服务 1人
订单服务 3人
抢单服务 2人
支付服务 1人
APP接入 1人
测试 1人
前端业务分组
IOS 1人
Android 1人
管理后台 1人
测试 1人
评论