gitbook/李智慧 · 高并发架构实战课/docs/495175.md
2022-09-03 22:05:03 +08:00

66 lines
4.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 期中测试 | 动手写一篇你自己的设计文档吧!
你好,我是李智慧。
现在课程已经过半我们已经学习了8个典型应用的架构设计不知你对软件建模和设计文档掌握了多少又对架构设计有了哪些思路呢
回到我们这个专栏的目的:一个是了解典型的高并发系统架构是如何设计的;另一个就是熟悉架构设计文档的写法和设计建模的方法。
所以,我期望你学习每一节课,不是在复习已经学过的技术,而是专门思考怎么去整合各种技术,构建一个完整的设计文档。这样,对于各种典型的互联网应用,你都能信手拈来,完成它的架构设计。
所谓“知而不行,只是未知”,为了帮你检测学习效果,我特地发起了一个架构设计活动:请你参考专栏中设计文档的写作方法,完成下方要求的系统架构设计文档。对于需求以及方案不明确的地方,你可以按照自己的理解进行设计,但是请你注意**文档要前后一致、逻辑自洽,具有可实现性**。
在课程尾声,我会从中挑选出有代表性的文档做针对性点评,并对大家的高频问题进行解答。
另外符合作业要求且获赞数最多的前3位同学我们也准备了奖励以下三种任选其一
* 与我进行半个小时的1V1语音沟通我会解答你关注的一些问题不局限于作业
* 极客时间赠送的[原创马克杯](https://shop18793264.m.youzan.com/wscgoods/detail/3nsyq9tt42mzs?banner_id=seach.18601096~search~2~saFhldmr&words=%E6%9D%AF&alg=0&slg=consumer-search%2CstandardModify%2C8c6cc09f-404b-d6eb-6da5-708a3a4ce33e%2C890.893.545_0872a1e40556423e80db7e9436609426&reft=1647337907520&spm=seach.18601096)
* 开通极客时间超级会员年卡获得50元返现。
**文档提交方式:**
请你将文档发布在[InfoQ写作平台](https://xie.infoq.cn)并把文档链接提交在评论区提示若需申请入驻infoQ写作平台请在留言区留下暗号“滴滴”会有专人帮你开通
**活动截止时间:**
2022年4月10日12点。
期待在留言区看到你!
## 背景介绍
通达是某上市公司全资投资成立的一家物流快递公司,主要进行同城快递业务,公司刚刚成立,主要竞品为[https://ishansong.com/](https://ishansong.com/)。
公司组建了20人的技术部门准备两个月后系统开发完成上线你是系统架构师请你完成第一版系统架构设计文档。
## 功能需求
* 用户通过app发起快递下单请求并支付
* 快递员通过自己的App上报自己的地理位置每30秒上报一次
* 系统收到快递请求后向距离用户直线距离5km内的所有快递员发送通知
* 快递员需要进行抢单,第一个抢单的快递员得到配单,系统向其发送用户详细地址
* 快递员到用户处收取快递,并记录到系统中:已收件
* 快递员将快递送到目的地,并记录到系统中:已送达
订单量预估预计上线三个月后日订单50万。
## 关键技术方案参考建议
* 系统采用微服务架构,用户请求通过负载均衡服务器分发给网关集群
* 使用消息队列向5km内的快递员发送通知消费者服务器获取的消息内容包括用户地址快递员列表
* 快递员实时位置缓存在分布式缓存Redis中
* 数据存储使用MySQL第一个上线版本不要求做数据分片但要做主从复制
## 文档要求
文档中应该包括以下UML模型
* 系统关键用例图,描述产品主要功能需求
* 下单抢单场景的业务活动图,即泳道模型(泳道包含不限于:用户,快递员,相关微服务)
* 系统部署模型:描述系统服务器关系(如:网关服务器,微服务服务器,负载均衡,分布式缓存,消息队列服务器,消息消费者服务器,数据库读写分离)
* 下单抢单场景的服务器时序模型
* 订单状态图模型
**文档全文不少于2000字。**