架构师训练营 - 同城快递架构文档
通达物流架构文档
虚拟场景:母公司全资投资成立的一家快递公司,主要进行同城快递业务,组建 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 订单状态图
四、总结
版权声明: 本文为 InfoQ 作者【陈皮】的原创文章。
原文链接:【http://xie.infoq.cn/article/f623d04ddc86798354ffbf9b1】。文章转载请联系作者。
评论