写点什么

架构设计大作业

用户头像
changtai
关注
发布于: 2020 年 09 月 19 日

一、简述

背景

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

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

产品需求

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

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

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

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

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

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

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

技术方案建议

  • 用户下单请求通过负载均衡服务器发送给下单网关集群

  • 使用消息队列向 5km 内的快递员发送通知(消费者服务器获取的消息内容包括:用户地址,快递员列表)

  • 快递员实时位置缓存在分布式缓存 redis 中

  • 数据存储使用 mysql,第一个上线版本不要求做数据分片,但要做主从复制

说明:以上技术方案建议是公司请的外部技术顾问(该顾问是产品负责人的朋友)给出的,具体是否合适请架构师定夺

练习要求

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

  • 系统关键用例图,描述产品主要功能需求

  • 下单抢单场景的业务活动图,角色领域泳道模型(角色:用户,快递员,系统)

  • 系统部署模型:描述系统服务器关系(如:网关服务器,微服务服务器,负载均衡,分布式缓存,消息队列服务器,消息消费者服务器,数据库读写分离)

  • 下单抢单场景的服务器时序模型

  • 订单状态图模型

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

PS:练习要求是大作业的要求(最低要求),建议自己代入角色,思考如何交出一份漂亮的设计文档,奠定自己在公司的地位

二、分析

  • 上市公司全资投资 -- 短时间项目不会缺钱

  • 同城快递业务 -- 以后业务会不会拓展到全国

  • 20 人的技术团队 -- 算是中等规模的开发团队了

  • 两个月后上线 -- 对于整个系统来说工期比较紧

  • 技术部没有技术负责人 “我”的角色是架构师 -- 如果项目进展顺利“我”的晋升的可能性很大

  • 对于外部技术顾问给出的方案 -- 总体比较靠谱,可以适当采纳

  • 上线后三个月日单超过 1 万,一年日单超过 50 万 -- 同城预计大概有几百个快递员,假设有 200 个快递员,每人每天平均 50 单,系统 TPS 预计不超过 5(考虑到快递集中的时间点);一年日单翻 50 倍,系统 TPS 也不超过 250,所以系统并发量不是很高,服务基本做两个节点的负载均衡就可以了。

  • 另外系统上线后,整体的业务会处于高速增长期,需求变更会非常多,前期需要做好软件的顶层设计,用好设计原则与设计模式。

  • 需要根据寄件人地址和快递员的位置进行匹配(5km 内),可以使用 redis 扩展数据类型 GEO

  • 用户 app 功能相对简单,前期可以考虑使用小程序替代

三、架构设计

3.1 设计概述

同城快递系统是⼀个用于进行同城快递业务的系统,是公司战略核心系统,承载着公司核心价值的目标任务。

3.1.1 功能约束

使⽤者包括用户、快递员、系统管理运营,主要核心功能如下:


用户:下单、支付、查看物流、评价

快递员:上报位置、抢单、订单配送、物流信息更新

系统:订单处理、广播订单、派发订单、数据分析(大数据平台)

3.1.2 非功能约束
  • 上线后三个月日单超过 1 万,一年日单超过 50 万

  • 用户 APP 性能⽬标:平均响应时间<300ms,95%响应时间<500ms,单机 TPS>100;

  • 快递员 APP 性能⽬标:平均响应时间<800ms,95%响应时间<1000ms,单机 TPS>100;

  • 后台管理系统性能⽬标:平均响应时间<800ms,95%响应时间<1000ms,单机 T PS>100;

  • 系统核⼼功能可⽤性⽬标:>99.97%;

  • 系统安全性⽬标:客户端程序与服务端进行加密通信;

  • 数据持久化⽬标:>99.99999%,保存时长不少于 3 年。

3.2 系统部署图与整体设计

系统上线建议使用公有云,这样可以把重心放到业务研发中,减少基础设施的维护成本。

主要组件包括:

客户端:用户 APP(小程序)、快递员 APP

基础设施:防火强、反向代理服务器、网关服务器、数据库存储、消息队列、缓存

微服务:注册中心、配置中心、微服务分布式集群

3.2.1 系统部署图

3.2.2 系统用例图


3.2.4 下单抢单场景时序图



3.2.5 下单抢单场景活动图


3.2.5 订单状态图



用户头像

changtai

关注

还未添加个人签名 2018.04.30 加入

还未添加个人简介

评论

发布
暂无评论
架构设计大作业