写点什么

架构 2 期 - 大作业(一)

用户头像
浮生一梦
关注
发布于: 2021 年 02 月 07 日

背景

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

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

产品需求

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

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

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

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

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

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

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

影响架构关键要素

  • 两个月系统上线

  • 新成立的研发小组

  • 三月内日单 1 万

产品用例

  • 产品主要分成三个部分:用户端、快递员端以及后台处理端

  • 用户端核心用例为下单、支付,其他还包括我的订单、取消订单等配套用例

  • 快递端核心用例为位置上报、抢单、更新订单等

  • 后台处理端核心用例为位置收集、群发订单、派单和订单管理等


部署架构

  • 以 nginx 作为软负载入口,用户端和快递端通过该入口接入

  • 整体划分为订单服务、位置服务和通知服务三个微服务

  • 数据库采用主从模式,进行读写分离

  • 位置数据存入 redis 缓存

关键业务

  • 下单抢单业务活动


  • 下单抢单时序模型


  • 订单状态图模型


架构演进方向

  • 冷热数据拆分,将订单数据中的冷数据进行迁移

  • 数据库分表分库,将大的业务表按照时间进行拆分,分拆并发压力

  • 优化位置上报算法,减少服务压力


用户头像

浮生一梦

关注

还未添加个人签名 2018.04.26 加入

还未添加个人简介

评论

发布
暂无评论
架构2期-大作业(一)