架构师训练营 - 大作业 - 通达物流系统架构设计文档

用户头像
心在飞
关注
发布于: 2020 年 09 月 17 日

通达物流系统架构设计文档

 

极客大学架构师训练营第0期4班2组 – 严雪忠

2020.9







1      系统概述

1.1      系统目的

通达物流系统是一个解决同城用户与快递员快速寄件/取件、下单/抢单、支付/提现、综合查询的物流系统。

该系统通过对用户周围寄件资源(快递员)的合理调配,提高了社会资源的利用率,实现了优势快递资源的共享,以达到用户快速寄件的目的。

该系统是公司同城物流战略的核心系统,承担着公司主要的业务功能,是实现公司上市基石。

该系统后续还会支持后台管理,如订单、物流信息的汇总、生成业务报表、统计等功能。

1.2      系统使用范围

通达物流系统的使用(App)并无地理位置限制,全世界只要有因特网的地方都能登录、查看、浏览系统网页。

但寄件/取件功能使用范围目前为:中国大陆(港澳台除外)内的同一个城市,即用户与快递员必须在同一个城市内。

1.3      引用文档

Doc123456 - 通达物流系统需求文档.docx - To be created.

2      系统需求

2.1      功能需求

通达物流系统主要包含以下功能:

·        用户通过手机 App(iOS/Android) 发起快递下单请求并支付

·        快递员通过自己的手机App 上报自己的地理位置,每30秒上报一次

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

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

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

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

 

系统使用者包括:用户、快递员、管理员。

2.2      非功能性需求

预计系统上线后三个月日单超过1万,一年日单超过50万。

综合业务、性能、安全、运维目标,系统需要满足以下非功能性需求:

1.      查询性能目标:

a.      平均响应时间<300ms, 95%响应时间<500ms,单机TPS >100

2.      下单性能目标:

a.      平均响应时间<800ms, 95%响应时间<1000ms,单机TPS >30

3.      抢单性能目标:

a.      平均响应时间<800ms, 95%响应时间<1000ms,单机TPS >30

4.      可用性:

a.      系统核心功能可用性目标 > 99.97%

5.      安全性:

a.      系统可拦截XSS、SQL 注入、CSRF攻击

b.      密码数据散列加密

c.      客户端数据 HTTPS 加密

d.      外部系统间通信对称加密

e.      防止恶意外挂 下单/抢单

6.      数据持久化目标:> 99.99999%

7.      可维护性:

a.      支持DevOps 自动化运维、持续集成/部署/交付、监控、报警等。

2.3      用例图

系统:提供下单、抢单、支付、提现、记录物流、查询订单/物流功能。

用户:普通用户、管理员(待开发)

快递员:普通快递员、王牌快递员(待开发)



系统用例图如下图 2-1:

图 2-1 通达物流系统用例图

3      系统概要设计

3.1      系统部署图

系统上线时预计部署 10台物理机(1台负载均衡,4台应用服务器,1台分布式缓存服务器,2台MySQL 主从服务器,1台文件服务器,1台消息队列服务器)。



系统部署图如图3-1所示:

图 3-1 通达物流系统部署图

3.2      系统框架图

系统包含如下模块:

·        订单:用户使用手机App 下单、寄快件,生成寄件订单; 快递员抢单、配单。

·        财务:用户使用手机 App  支付;快递员使用手机 App 提现。

·        物流:快递员抢到订单后,到用户处上门收取快递,登记物流信息(已收件),然后送快    递(运送中),送达后登记物流信息(已送达)。

地理位置:获取用户和快递员的实时地理位置信息。

·        地理位置:获取用户和快递员的实时地理位置信息。

图 3-2 通达物流系统框架图

3.3      下单场景

3.3.1   业务活动图

用户:打开手机 App, 在系统主界面/首页进行下单,填写快递信息,点击“下单”。

订单子系统:创建订单,并自动跳转到支付界面。

财务子系统:处理支付,支付成功后向订单子系统消息队列发送“已支付”消息。

图 3-3 通达物流系统 - 下单业务活动图

3.3.2   时序图

图 3-4 通达物流系统 - 下单时序图

用户登录后,发送请求下单消息到订单模块,订单模块根据创建订单信息,自动跳转到财务支付界面,用户完成支付,返回支付结果并发送新订单通知。如果支付失败(网络错误、余额不足等),用户也可以手动向财务模块发送请求支付消息。只有当支付成功后,系统才会发送新订单消息,通知快递员抢单。

3.4      抢单场景

3.4.1   业务活动图

快递员:打开手机 App, 在系统主界面/首页进行“听单”,收到抢单消息进行“抢单”。

订单子系统:监控已支付订单消息,当有新“已支付”订单消息进入时,查询快递员地理位置,发送抢单消息,通知快递员进行抢单,然后处理快递员抢单。

地理位置子系统:获取用户 5km 里范围内快递员的地理位置信息。

图 3-5 通达物流系统 – 抢单业务活动图

3.4.2   时序图

图 3-6 通达物流系统 – 抢单时序图

当用户支付完成后,订单模块接收到新订单通知,它会根据消息中的用户地址,向地理位置模块请求 5km 内的快递员列表,然后向快递员发送抢单消息。快递员收到抢单消息,进行抢单,订单模块处理抢单消息,返回抢单结果。

3.5      订单状态图

图 3-7 通达物流系统 – 订单状态图

订单有6中状态,当用户输入完下单信息(用户/收件地址、手机号等),点击提交,订单状态变为”待支付“,用户支付完成,订单状态变为”已支付“,快递员抢单成功,订单状态变为”已配单“,快递员上门收件,订单状态变为”已收件“,快递员送达快递,订单状态变为“已送达”。

当订单处在“待支付”和“已支付”状态时,用户可以取消订单,订单状态变为“已取消”。

4      系统详细设计

4.1      下单场景

组件图、类图、类的时序图

4.2      抢单场景

组件图、类图、类的时序图

5      一些技术点

1.      寻找算法-系统收到新的快递请求后,如何快速寻找用户 5km 内的快递员,提醒他们抢单?

将快递员的实时位置缓存在 Redis?



发布于: 2020 年 09 月 17 日 阅读数: 155
用户头像

心在飞

关注

还未添加个人签名 2017.10.15 加入

2个女儿的爸爸 | 程序员 | CS 反恐精英

评论

发布
暂无评论
架构师训练营 - 大作业 - 通达物流系统架构设计文档