写点什么

架构师训练营大作业 - 通达物流架构

发布于: 2020 年 09 月 18 日
架构师训练营大作业-通达物流架构

一. 设计概述

1、项目背景

通达是某上市公司全资投资成立的一家物流快递公司,主要进行同城快递业务,公司刚刚成立,组建20人技术部门,准备两个月后系统开发完成上线。

2、功能概述

  1. 用户通过app发起快递下单请求并支付

  2. 快递员通过自己的app上报自己的地理位置,每30秒上报一次

  3. 系统收到快递请求后,向距离用户直线距离5Km内的所有快递员发送通知

  4. 快递员需要进行抢单,第一个抢单的快递员得到配单,系统向其发送用户详细地址

  5. 快递员到用户处收取快递,并记录到系统中:已收件

  6. 快递员将快递送到目的地,并记录到系统中:已送达

3、非功能约束

  1. 上线后三个月日订单超过1万,1年后日单50万

  2. 系统要高可用,可用性到3个9

4、用例图

二. 系统部署图与整体设计

由设计概述中背景知识可知,当前团队为新组建团队,未经过磨合,系统开发上线时间为两个月,人数20人,可谓是人少活多时间紧。

在资源如此紧缺的情况下,要实现系统上线,我们应该设计出可满足当前要求的系统设计,当前以简单、满足系统要求为主。

系统上线三个月后,日订单1万,那么按照一天主要集中在8小时投递快递来看,一分钟均单21单,按照峰值为平均值3倍来算,60单每分钟,合一秒一单,TPS不高,对系统性能要求不高。

需要计算方圆5Km内快递员,快递员每30秒上传一次位置信息,这个可以存储在redis中,且redis可以计算地点位置,使用redis集群,提高可用性。

上线后,三个月,月单30万,数据量不大,读写压力不大,采用MySQL主备方案。

订单服务器负责下单和抢单,为了高可用,使用集群方式,又因为服务压力不大,使用两台服务器组成集群即可。

支付、通知等服务均以集群方式部署,提高系统可用性。

支付接入支付宝和微信支付。

1、系统部署图

三、子系统设计

1、 订单状态

订单状态

  1. 已下单

  2. 已支付

  3. 已接单

  4. 已取件

  5. 已送达

  6. 已取消

  7. 已拒单

  8. 已拒单

2、下单接单泳道图

用户发起下单,平台通知5Km内快递员接单,快递员抢单

3、服务器下单抢单时序图

下单抢单场景,多服务器角色参与

  1. 网关-负载均衡服务器

  2. 订单服务器

  3. MySQL服务器

  4. Redis服务器

  5. 推送通知服务器

  6. 支付服务器

四、详细设计

略。。。



用户头像

喜欢简洁干净的代码 2018.05.04 加入

使用技术,实现业务。思考业务,创新技术。

评论 (2 条评论)

发布
用户头像
题图很有意思,与你共创财富。。。
2020 年 09 月 19 日 10:23
回复
哈哈,共同致富!
2020 年 09 月 20 日 20:10
回复
没有更多了
架构师训练营大作业-通达物流架构