架构师训练营大作业 - 通达物流架构
一. 设计概述
1、项目背景
通达是某上市公司全资投资成立的一家物流快递公司,主要进行同城快递业务,公司刚刚成立,组建20人技术部门,准备两个月后系统开发完成上线。
2、功能概述
用户通过app发起快递下单请求并支付
快递员通过自己的app上报自己的地理位置,每30秒上报一次
系统收到快递请求后,向距离用户直线距离5Km内的所有快递员发送通知
快递员需要进行抢单,第一个抢单的快递员得到配单,系统向其发送用户详细地址
快递员到用户处收取快递,并记录到系统中:已收件
快递员将快递送到目的地,并记录到系统中:已送达
3、非功能约束
上线后三个月日订单超过1万,1年后日单50万
系统要高可用,可用性到3个9
4、用例图
二. 系统部署图与整体设计
由设计概述中背景知识可知,当前团队为新组建团队,未经过磨合,系统开发上线时间为两个月,人数20人,可谓是人少活多时间紧。
在资源如此紧缺的情况下,要实现系统上线,我们应该设计出可满足当前要求的系统设计,当前以简单、满足系统要求为主。
系统上线三个月后,日订单1万,那么按照一天主要集中在8小时投递快递来看,一分钟均单21单,按照峰值为平均值3倍来算,60单每分钟,合一秒一单,TPS不高,对系统性能要求不高。
需要计算方圆5Km内快递员,快递员每30秒上传一次位置信息,这个可以存储在redis中,且redis可以计算地点位置,使用redis集群,提高可用性。
上线后,三个月,月单30万,数据量不大,读写压力不大,采用MySQL主备方案。
订单服务器负责下单和抢单,为了高可用,使用集群方式,又因为服务压力不大,使用两台服务器组成集群即可。
支付、通知等服务均以集群方式部署,提高系统可用性。
支付接入支付宝和微信支付。
1、系统部署图
三、子系统设计
1、 订单状态
订单状态
已下单
已支付
已接单
已取件
已送达
已取消
已拒单
已拒单
2、下单接单泳道图
用户发起下单,平台通知5Km内快递员接单,快递员抢单
3、服务器下单抢单时序图
下单抢单场景,多服务器角色参与
网关-负载均衡服务器
订单服务器
MySQL服务器
Redis服务器
推送通知服务器
支付服务器
四、详细设计
略。。。
评论 (2 条评论)