写点什么

架构师训练营 - 同城快递架构文档

用户头像
陈皮
关注
发布于: 2020 年 09 月 18 日
架构师训练营 - 同城快递架构文档

通达物流架构文档



虚拟场景:母公司全资投资成立的一家快递公司,主要进行同城快递业务,组建 20 人的技术团队,准备在两个月后系统开发完成上线。做为架构师完成系统顶层架构设计,并组织评审会议。



说明:技术部没技术负责人,由产品负责人兼管(产品负责人为原某互联网大厂的产品总监研发出身),架构师(你)是技术部最资深的技术人员。



技术架构建议:

用户下单请求通过负载均衡服务器分发给下单网关集群

使用消息队列向5km内的快递员发送通知(消费者服务器获取的消息内容包括:用户地址, 快递员列表)

快递员实时位置缓存在分布式缓存 Redis 中数据存储使用 MySQL,第一个上线版本不要求做数据分片,但要做主从复制



说明: 以上技术方案建议是公司请的外部技术顾问(该顾问是产品负责人的朋友)给出的,具体是否合适请架构师自己定



需要解决的问题:

1. 结合业务的技术落地架构设计

2. 协调开发资源以按时上线,考虑项目上线风险点,准备备用策略

3. 考量人员组成结构,针对相关方给出架构方案(公司领导、产品负责人、研发)

4. 需要考虑公司背景和人际关系,技术架构建议只做参考,会部分采用

一、背景



新成立的公司,主要进行同城快递业务。团队人员从母公司调度而来,协调组织人员在两个月内上线。

二、 需求

1. 业务需求

  • 用户通过 App 发起快递下单请求并支付

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

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

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

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

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

2. 非功能性需求



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

三、架构设计

1. 需求分析

1.1 事件风暴



1.2 用例图





2. 系统架构设计



2.1 项目部署图





  • 为保证系统高可用,网关、应用服务器分别部署两台

  • KAFKA 与 Redis 做集群部署,MySQL 一主两从部署

2.2 业务系统设计

2.2.1 用户服务



用户服务管理用户信息:



主要包括用户注册、登录、登出和用户信息查询





2.2.2 订单服务





2.2.3 快递员服务



2.3 下单、抢单活动图





2.4 下单、抢单时序图





2.5 订单状态图





四、总结



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

陈皮

关注

还未添加个人签名 2018.04.26 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营 - 同城快递架构文档