写点什么

架构师期末作业

用户头像
傻傻的帅
关注
发布于: 2020 年 09 月 15 日
  1. 背景

某上市公司全资投资成立一家物流快递公司,主要进行同城快递业务,公司刚刚成立组建了 20 人技术部门,准备两个月后系统开发完成上线。

  1. 产品需求

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

快递员通过自已的 app 上报地理位置,每 30 秒上报一次

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

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

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

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

  1. 高层架构设计

用例图:

与系统交互的实例包括:用户、快递员、三方支付网关

系统主要功能包括:下单、付款、评价、位置获取与上报、订单状态更新、收发通知、抢单


下单抢单活动图:


1、用户发起寄送申请并支付相应费用


2、系统将新单推送到 5KM 范围内的所有快递员,进行抢单


3、获取到订单的快递员上报状态,系统推送客户相关信息给快递员


4、快递员根据客户地址上门取件,更新订单状态为:已取件


5、快递员进行派送,待接收方签收后,更新订单状态为:已送达


6、本次订单业务结束


泳道图:


时序图:

订单状态模型图:

1、订单在未收件之前都可以取消订单,取消后的订单变为:已取消状态,该订单的生命周期结束


2、快递员在上门收件中可能会发生收件不成功(客户临时有事不在家等),这时订单状态不更新,快递员可以联系客户约下次取件时间


3、快递员在派送过程中也会发生派送失败(收件人暂时无法收件等),这时订单状态不更新,快递员可以联系客户约下次收件时间


系统部署图:

1、应用采用微服务部署在 K8S 集群中,可以同时满足高可用和负载均衡,自动化运维


2、消息中间件也部署到 K8S 集群中,作高可用和负载均衡


3、数据库采用 mongoDB 复制集,可满足应用的快速迭代需求和后期的扩展


4、技术方案建议

  • 应用按功能划分为单个独立的模块,采用微服务架构;整个微服务架构部署到 k8s 集群中进行运态伸缩,满足高可用和负载均衡

  • 使用消息队列向快递员发送抢单通知

  • 数据库采用 MongoDB,采用三节点的复制集架构实现高可用、异地容灾,快速响应业务的快速变化和迭代以及后期的数据横向扩展能力,同时自带负载均衡及读写分离功能,无需借助第三方中间件。

  • 以最小化可满足业务需求为目的,先把业务跑起来,后面再进行更新迭代


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

傻傻的帅

关注

走自已的路,让别人无路可走 2019.09.18 加入

还未添加个人简介

评论

发布
暂无评论
架构师期末作业