写点什么

hw9- 毕业项目设计

作者:WWH
  • 2022 年 1 月 16 日
  • 本文字数:1682 字

    阅读完需:约 6 分钟

业务

登录

       改密码

       找回用户

注册

浏览(包含匿名)

购物车

结算,下单(checkout)

账户

       User info

       Order history

       Payment

       Address

App 下载高峰

 

架构

总体分析

日活 100 万,每天活跃 40%,预估 250 万人已注册。由于平台活动力度大,宣传做得好,活动期间新增了 30 万用户。

 

预估秒杀当天登陆的 QPS 有 230 万(200 万来自活动以前注册用户,30 万是活动期间注册的),抢单的 QPS 有 180 万。

 

暂时忽略匿名浏览,匿名下单。

 

当天场景

230 万人登陆(读取用户数据)

假设从活动推广开始(提前 10 天),有 10 万新用户注册(写入,预计有 10 万,10 万也是 app 的下载数量)

假设有 20%的人检查支付方式,230 万*20% = 46 万;有 10%的人修改支付方式,230 万*10% = 23 万。

假设有 30%的人检查收货地址,230 万*30% = 69 万

 

假设有 30%的老用户需要修改密码或找回用户,200 万*30% = 60 万。

 

10 个品类,每个品类不超过 20 个商品。最多有 200 件商品。被挑选售卖的商品都是畅销商品和好评很多的,预计每人会浏览 60%的商品。230 万*200*60% = 2.76 亿次浏览

 

假设有 10%的浏览被加购物车,2.76 亿*30% = 8280 万次

被挑选售卖的商品都是畅销商品和好评很多的,假设 60%的购物车被最终下单,8280 万*60% = 4968 万次。

 

商品被卖出后减库存,最后一件商品被卖出后改状态,但不下架。

 

下单关联商品和用户(用户基本信息,收货地址,支付方式)。

 

存储

每个业务分别有多少条数据?

 

登陆信息读取:230 万/天

新用户注册(写入新用户):10 万/天

app 的下载数量(app 读取):10 万/天

检查支付方式(读取):46 万/天

修改支付方式(更新):23 万/天

检查收货地址(读取):69 万/天

修改密码(更新):60 万/天

找回用户(读取):60 万/天

浏览商品(读取):2.76 亿/天。每次加载商品页面,会加载商品,库存,和价格,所以加载商品的真实读取是 8.28 亿/天。由于对商品,库存,和价格的请求是不区分用户的,这些数据可以缓存在 Redis。

加购物车(写入): 8280 万/天

虽然有 4968 万/天下单请求,但是成功下单的只有 200(商品数量)。所以下单(写入):200/天

 

存储架构

价格(原价和折后价),商品,登录状态存 Redis。其他可以走 DB。

采用主从集群,提高机器利用率。

      

 

计算架构

注册

假设从活动推广开始(提前 10 天),有 10 万新用户注册。最多一天有 3 万人注册,时间分布在 12 个小时内。30000 / (12 * 60 * 60) ≈0.7 个请求/秒。活动开始前一小时有 1 万人注册,10000/ (60 * 60) ≈2.8 个请求/秒。可以忽略不计。

 

登录

日活 100 万,每天活跃 40%,预估 250 万人已注册。由于平台活动力度大,宣传做得好,活动期间新增了 30 万用户。

预估活动推广前 250 万人已注册。日活 100 万已经处于登录状态。假设登录状态可以保持 10 天,假设额外还有 80 万人处于登录状态,活动期间新增了 30 万用户都是处于登录状态。活动当天有 250-180=70 万人需要登录。预估有 30 万人在活动开始前 2 小时内登录,30 万 / (2 * 60) = 2,500 次登录/秒。

 

浏览

浏览商品 2.76 亿/天都走 Redis。QPS 是 2.76 亿 * 3 / (24 * 60 * 60) ≈ 3190 次/秒。

假设 30%的流量都在最后两小时,2.76 亿*30% / (2 * 60 * 60) ≈  11,500 次/秒。

 

下单

加购物车 8280 万/天。假设 30%的加购物车都在最后两小时,8280 万*30% / (2 * 60 * 60) ≈ 3450 次/秒。

下单请求有 4968 万/天,假设 20%的下单都在最后一小时,4968 万*20% / (60 * 60) ≈2760 次/秒。

 

负载均衡

QPS+TPS = 2,500 次登录/秒 + 11,500 次/秒 + 2760 次/秒 = 16,760 次/秒。

假设单机性能 500 QPS,需要 34 台机器。预留 10%的性能,需要 38 台机器。

 

缓存

采用 APP 缓存 + web 容器缓存 + 分布式缓存

因为只有用 app 才能参与秒杀,所以用 app 缓存已经浏览过的商品和静态资源。

web 容器缓存缓存应用部署相关资源。

分布式缓存如 Redis,缓存商品和价格。

 

高可用

用户数量还不到值得做异地多活的,可以做同城跨区双中心

 

下单后,可以由任务分解器去分别更新库存,订单状态。在存储方面,只有 200 个订单,集群间可以采用复制数据的方式,暂时用半同步方式。

 

可扩展

已经落地微服务。预估团队有 50 人,根据“三个火枪手”原则,可以拆成 16 个微服务。

 

用户头像

WWH

关注

还未添加个人签名 2020.10.29 加入

还未添加个人简介

评论

发布
暂无评论
hw9-毕业项目设计