写点什么

架构入门感悟总结

用户头像
莫问
关注
发布于: 2021 年 01 月 31 日

1、通达同城快递业务系统架构设计

需求背景

通达是某上市公司全资投资成立的一家物流快递公司,目前需要开发一套同城快递系统。该系统分为用户端、快递员端、服务端几个部分,可以由用户自助下单,抢单成功的快递员会负责上门完成用户的递送需求。

公司现有开发人员 20 人,系统预计在两个月后上线。

功能需求

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

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

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

4、快递员可以抢单,抢到单的快递员将会由系统下发用户的取件地址

5、系统将得到配单的快递员信息发送给用户,用户可以查看该快递员的位置、联系方式

6、快递员取件后在快递员端 APP 标注订单状态为已收件

7、快件运送过程中,用户可以持续查看快递员的位置、联系方式

8、快递员将快件送达后在快递员端 APP 标注订单状态为已送达

9、用户可以查询三个月内的历史订单

非功能需求

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

2、支持接入第三方支付

3、数据使用加密传输

4、用户单次查询响应时间<500ms,95%响应时间<1000ms,单机 TPS>20

5、下单响应时间<500ms,95%响应时间<1000ms,单机 TPS>20

6、系统核心可用性目标 99.99%

用例图



部署图

1、CDN 用于加快用户图片访问速度

2、负载均衡服务器早期采用 nginx 部署,将来并发量大的时候改用 LVS 部署

3、网关服务器早期采用双机部署,未来根据业务量持续扩容

4、微服务框架使用 Dubbo

5、消息队列采用 Active MQ

6、早期不准备部署 Redis,快递员位置直接记录在配单微服务中

7、数据库采用 MySQL,并启用主从复制

下单抢单场景动态模型

业务活动图


关键算法思路

订单位置匹配

1、早期快递员少的情况下,采用全部遍历法,用取件地址经纬度与快递员最新经纬度,根据欧式距离公式计算直线距离,进行匹配

2、中期,合并快递员位置,用经纬度精度为小数点后两位(距离误差 1KM)做区域定位,先选定区域,后进行区域内快递员位置匹配

3、后期,在中期区域定位基础上,根据导航路线距离及预估上门时间进行匹配

抢单加锁

1、早期使用 Redis 实现抢单加锁

2、未来计划使用 zookeeper 实现分布式锁


2、脑图


发布于: 2021 年 01 月 31 日阅读数: 11
用户头像

莫问

关注

站在现在看未来,站在未来看现在 2019.11.20 加入

居安思危,先忧后乐

评论

发布
暂无评论
架构入门感悟总结