后端基础

极客时间《架构师训练营》大作业

2020-09-19  本文已影响0人  anOnion

背景

通达是一款本地即时配送平台。公司秉承“通派无障,使命必达”的信念,专注于用移动和众包的方式解决 O2O 领域最大的痛点:居民的最后 5 公里配送。
公司刚成立,已组建了 20 人的技术部门,准备两个月后系统开发完成上线。第一季目标日订单 1 万。

功能概述

用例图

非功能性需求

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

系统部署图与整体设计

部署图

系统第一版(三月版)业务相对简单,流量有限——峰值 QPS 预计不超过 10,所以保证尽快上线为第一目标。如上有色区域为核心业务,分成三个独立的微服务:订单服务、定位服务、推送服务:

订单服务活动图

活动图

该场景的主要流程如下:

  1. 寄件人下单并支付
  2. 系统向附近 5km 内的快递员发起抢单
  3. 快递员抢单
  4. 抢单成功后,系统给寄件人发送寄件码;快递员收到订单详细信息,并上门取件
  5. 快递员上门取件后,输入取件码,开始派件;系统给收件人发送收件码
  6. 快递员派送成功,输入收件码
  7. 订单完成

订单状态图

状态图

下单抢单时序图

下单前

快递员 APP 每 30 秒上报一次位置,并存于 Redis;用户打开 APP 即可看到附近骑手定位。

用户

定位匹配算法:

下单时

下单过程如下所示:

  1. 用户提交订单,服务器创建订单
  2. 用户完成支付,通知服务器开始抢单
  3. 推送服务向附近 5 公里以内的快递员广播抢单(快递员抢单见下图)
  4. 抢单成功,用户收到寄件码
订单时序图

快递员抢单过程

快递员的抢单流程如下所示:

  1. 接上图,推送服务向附近快递员发起抢单
  2. 快递员收到抢单通知后,立即抢单
  3. 抢单成功,系统返回订单详情
  4. 推送服务同时给用户发送寄件码
骑手

抢单规则:

三个月后系统升级

第一版计划是尽快上线,因此只是设计的移动端的部署图。三个月后,若业务稳定,系统需要进一步升级,实现日订单 50 万的目标。改造计划如下:

  1. 同时上线 PC 端和移动端;并增加 BFF 层,解耦前后端部署设计

  2. 后台系统由先前简单的读写分离模式,细分更多的微服务应用集群,包括用户服务、骑手服务、订单服务、推送服务、支付服务、后台系统、评价系统、通讯系统等等

  3. 订单结束后,设计基于 MySql 到 MongoDB 的冷热分离

  4. 建立后台系统的大数据分析平台

升级计划
上一篇 下一篇

猜你喜欢

热点阅读