架构师期末作业
背景
某上市公司全资投资成立一家物流快递公司,主要进行同城快递业务,公司刚刚成立组建了 20 人技术部门,准备两个月后系统开发完成上线。
产品需求
用户通过 app 发起快递下单请求并支付
快递员通过自已的 app 上报地理位置,每 30 秒上报一次
系统收到快递请求后,向距离用户直线距离 5KM 内的所有快递员发送通知
快递员需要进行抢单,第一个抢单的快递员得到配单,系统向其发送用户详细地址
快递员到用户处收取快递,并记录到系统中:已收件
快递员将快递送到目的地,并记录到系统中:已送达
高层架构设计
用例图:
与系统交互的实例包括:用户、快递员、三方支付网关
系统主要功能包括:下单、付款、评价、位置获取与上报、订单状态更新、收发通知、抢单
下单抢单活动图:
1、用户发起寄送申请并支付相应费用
2、系统将新单推送到 5KM 范围内的所有快递员,进行抢单
3、获取到订单的快递员上报状态,系统推送客户相关信息给快递员
4、快递员根据客户地址上门取件,更新订单状态为:已取件
5、快递员进行派送,待接收方签收后,更新订单状态为:已送达
6、本次订单业务结束
泳道图:
时序图:
订单状态模型图:
1、订单在未收件之前都可以取消订单,取消后的订单变为:已取消状态,该订单的生命周期结束
2、快递员在上门收件中可能会发生收件不成功(客户临时有事不在家等),这时订单状态不更新,快递员可以联系客户约下次取件时间
3、快递员在派送过程中也会发生派送失败(收件人暂时无法收件等),这时订单状态不更新,快递员可以联系客户约下次收件时间
系统部署图:
1、应用采用微服务部署在 K8S 集群中,可以同时满足高可用和负载均衡,自动化运维
2、消息中间件也部署到 K8S 集群中,作高可用和负载均衡
3、数据库采用 mongoDB 复制集,可满足应用的快速迭代需求和后期的扩展
4、技术方案建议
应用按功能划分为单个独立的模块,采用微服务架构;整个微服务架构部署到 k8s 集群中进行运态伸缩,满足高可用和负载均衡
使用消息队列向快递员发送抢单通知
数据库采用 MongoDB,采用三节点的复制集架构实现高可用、异地容灾,快速响应业务的快速变化和迭代以及后期的数据横向扩展能力,同时自带负载均衡及读写分离功能,无需借助第三方中间件。
以最小化可满足业务需求为目的,先把业务跑起来,后面再进行更新迭代
版权声明: 本文为 InfoQ 作者【傻傻的帅】的原创文章。
原文链接:【http://xie.infoq.cn/article/8a8e8f517cd6bddc59795377f】。文章转载请联系作者。
评论