写点什么

架构师训练营结课作业

用户头像
Rocky·Chen
关注
发布于: 2021 年 02 月 06 日

大作业(一)

背景:

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

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

产品需求:

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

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

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

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

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

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

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

技术方案建议:

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

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

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

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

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

练习要求:

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

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

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

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

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

  • 订单状态图模型

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

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

大作业(二)

请用思维导图画出架构师训练营所有技术知识点

用一张思维导图画出所有训练营知识点。

提交 xmind 格式的思维导图文件或思维导图导出的图片文件。

知识点细节程度不低于以下示例:


二、作业实现

2.1 知识图谱


2.2 设计实现


2.2.1 功能性需求


同城快递系统主要功能包括用户下单,用户提供货品,用户收货;快递员抢单,快递员去指定地点收货,快递员送货达到目的地。常用场景如下:

1.用户下订单,快递员抢单。

2.快递员与用户沟通取货时间地点,快递员按照信息去取货品,送回站点,重新规划派送路径。

3.快递员从服务点拿取要送的货品,送达目标客户。

4.快递员 app 自动上报位置。

5.有新订单,抢单微服务给 5km 内的快递员 发可以抢单信息。

下述用例图,主要角色有用户,快递员,货品,订单, 消息系统。



2.2.2 ⾮功能性需求


预计上线后 3 个月日单超过 1 万,1 年日单超过 50 万,业务数据、并发量倍增,支持动态扩容。

  1. 查询性能⽬标:平均响应时间<1000ms,单实例 TPS>200;

  2. 下单性能⽬标:平均响应时间<1000ms,单实例 TPS>100;

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

  4. 系统安全性⽬标:系统可拦截 DOS 攻击、过滤 XSS 攻击、过滤 SQL 注入攻击;数据传输加密,客户端通信基于 https 协议,CA 证书

  5. 数据持久化⽬标:>99.99% 。


2.系统部署图与整体设计


系统上线时预计部署 120 台物理机,需要网关服务、业务服务、负载均衡、分布式缓存、消息队列服务、数据库服务等。


2.1 服务部署图



  1. 网关服务主要是鉴权、协议转换、限流等,初期 5 个实例。

  2. 消息队列服务器,负责快速响应用户请求,需要 5 个实例。

  3. 负责均衡服务器,需要对流量进行均衡到业务服务器,需要 5 个实例。

  4. 分布式缓存服务器,记录快递员的最新地理位置信息、热点数据等,集群,初期 6 个节点,支持数据主从。

  5. 用户微服务,正常在注册、登录才会访问,流量不是很大,需要 5 台服务器。

  6. 订单微服务,大流量入口,用户下单的时候,快递抢单,用户状态等操作频繁,需要 50 台服务器。

  7. 抢单微服务,用户下单成功以后,抢单微服务给附近 5km 的快递员发送新订单推送;快递员会抢单,通过抢单微服务,最终确定接单的快递员;需要 5 台服务器;

  8. 数据采集系统的功能职责为查询用户消费数据,生成统计报表,部署 5 台服务器,依赖用户系统和订单新系统,实现订单信息和报表统计功能。

  9. 数据库系统,业务系统与数据采集服务数据分离,都需要主数据库、重数据库,需要 20 台服务器。

  10. 第三方支付系统为外部系统,支持用户用微信、支付宝、银联等第三方支付充值。这里是订单微服务的一部分。


2.2 下单抢单时序图



3. 用户下单抢单系统设计


3.1 下单抢单活动图



3.2 订单状态机



用户头像

Rocky·Chen

关注

还未添加个人签名 2018.03.03 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营结课作业