大作業(一)(PPT)
背景:
通达是某上市公司全资投资成立的一家物流快递公司,主要进行同城快递业务,公司刚刚成立,组建 20 人技术部门,准备两个月后系统开发完成上线,你是后端架构师,请你完成系统顶层架构设计,并组织架构评审会议。
说明:技术部没技术负责人,由产品负责人兼管(产品负责人为原某互联网大厂的产品总监,研发出身),架构师(你)是技术部最资深的技术人员。
产品需求:
用户通过 app 发起快递下单请求并支付
快递员通过自己的 App 上报自己的地理位置,每 30 秒上报一次
系统收到快递请求后,向距离用户直线距离 5km 内的所有快递员发送通知
快递员需要进行抢单,第一个抢单的快递员得到配单,系统向其发送用户详细地址
快递员到用户处收取快递,并记录到系统中:已收件
快递员将快递送到目的地,并记录到系统中:已送达
说明:预计上线后三个月日单超过 1 万,一年日单超过 50 万
技术方案建议:
用户下单请求通过负载均衡服务器分发给下单网关集群
使用消息队列向 5km 内的快递员发送通知(消费者服务器获取的消息内容包括:用户地址,快递员列表)
快递员实时位置缓存在分布式缓存 Redis 中
数据存储使用 MySQL,第一个上线版本不要求做数据分片,但要做主从复制
说明:以上技术方案建议是公司请的外部技术顾问(该顾问是产品负责人的朋友)给出的,具体是否合适请架构师自己定夺
练习要求:
以 PPT 方式输出系统概要设计(顶层架构设计),包含以下模型,进行架构设计评审:
系统关键用例图,描述产品主要功能需求
下单抢单场景的业务活动图,角色领域泳道模型(角色:用户,快递员,系统)
系统部署模型:描述系统服务器关系(如:网关服务器,微服务服务器,负载均衡,分布式缓存,消息队列服务器,消息消费者服务器,数据库读写分离)
下单抢单场景的服务器时序模型
订单状态图模型
说明:ppt 需要在备注区对模型图进行必要的备注说明
PS:练习要求是大作业的最低要求,建议自己代入角色,思考如何交出一份漂亮的设计文档,奠定自己在公司的地位。
======================================================================
內容
背景和要求
同城快递业务 (全國)
20 人技术部门
两个月后系统开发完成上线 (MVP Mimimum Viable Product)
产品需求
用户通过 app 发起快递下单请求并支付
快递员通过自己的 App 上报自己的地理位置,每 30 秒上报一次
系统收到快递请求后,向距离用户直线距离 5km 内的所有快递员发送通知
快递员需要进行抢单,第一个抢单的快递员得到配单,系统向其发送用户详细地址
快递员到用户处收取快递,并记录到系统中:已收件
快递员将快递送到目的地,并记录到系统中:已送达
说明:预计上线后三个月日单超过 1 万,一年日单超过 50 万
預期系統要求
Number of potential users : 全國互聯網用戶 = 14 億 * 0.5 = 7 億
Expected number of users : 7 億 * 0.1 = 7000 萬
平均每天下單 件數(包括個人用戶和商業客戶): 7000 萬客戶 * 1 件 = 7000 萬件
每秒下單件數 : (7000 萬件 / 18hours 活躍時數)/3600 秒 = 約 1080 件
Read QPS = 每秒下單件數 x 10 (平均完成一次服務需要的 read 數目) = 10,800 QPS
Write QPS = 每秒下單件數 x 5 (平均完成一次服務需要的 write 數目) = 5,400 QPS
Total QPS = Read QPS + Write QPS = 16200 QPS
系统顶层架构设计
1)系统关键用例图 Usecase Diagram,描述产品主要功能需求
2)下单抢单场景的服务器时序模型 Sequence Diagram
3)系统部署模型 Deployment Diagram:描述系统服务器关系(如:网关服务器,微服务服务器,负载均衡,分布式缓存,消息队列服务器,消息消费者服务器,数据库读写分离)
4)下单抢单场景的业务活动图 Activity Diagram,角色领域泳道模型(角色:用户,快递员,系统)
5)订单状态图模型 State Diagram
版权声明: 本文为 InfoQ 作者【Christy LAW】的原创文章。
原文链接:【http://xie.infoq.cn/article/7cd0cdcb50d780811f9a8cb1b】。文章转载请联系作者。
评论