GuilinDev

Architecture Design Summary

17 September 2020

背景

通达是某上市公司全资投资成立的一家物流快递公司,主要进行同城快递业务,公司刚刚成立,组建20人技术部门,准备两个月后系统开发完成上线,你是后端架构师,请你完成系统顶层架构设计,并组织架构评审会议。

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

产品需求

  • 用户通过app发起快递下单请求并支付
  • 快递员通过自己的app上报自己的地理位置,每30秒上报一次
  • 系统收到快递请求后,向距离用户直线距离5km内的所有快递员发送通知
  • 快递员需要进行抢单,第一个抢单的快递员得到配单,系统向其发送用户详细地址
  • 快递员到用户处收取快递,并记录到系统中:已收件
  • 快递员将快递送到目的地,并记录到系统中:已送达

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

技术方案建议

  • 用户下单请求通过负载均衡服务器分发给下单网关集群
  • 使用消息队列向5km内的快递员发送通知(消费者服务器获取的消息内容包括:用户地址,快递员列表)
  • 快递员实时位置缓存在分布式缓存Redis中
  • 数据存储使用MySQL,第一个上线版本不要求做数据分片,但要做主从复制

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

实现方式

PPT方式输出系统概要设计(顶层架构设计),包含以下模型,进行架构设计评审

  • 系统关键用例图,描述产品主要功能需求
  • 下单抢单场景的业务活动图,角色领域泳道模型,(角色:用户, 快递员,系统)
  • 系统部署模型: 描述系统服务器关系(如: 网关服务器,微服务服务器,负载均衡,分布式缓存,消息队列服务器,消息消费者服务器,数据库读写分离)
  • 下单抢单场景的服务器时序模型
  • 订单状态图模型

说明: ppt在备注区对模型图进行必要的备注说明

PS: 代入角色

顶层架构方案