写点什么

架构 1 期模块九作业

用户头像
五只羊
关注
发布于: 刚刚

业务背景

1)挑选了 10 个品类,每个品类下 20 个商品,总共 200 个商品参与活动;

2)准备了 10 台 iPhone12,1000 个充电宝参与秒杀活动。


约束与限制

1)用户下载 APP,注册登陆才能参加秒杀活动;

2)技术团队以 JAVA 为主,已落地微服务架构;

3)目前只有单机房;


总体架构思路

原来电商系统分为 3 个子系统,商品系统、订单系统、会员系统。

因为已落地微服务架构,现需要增加一个秒杀系统并将其分离出来,故现在有四个系统。根据三个火枪手原则,后台需要至少 12 位技术人员维护系统。正常日活为 100 万,总用户不超过千万。假设大促的日活增长为原来日活的 300%,即 300 万日活。因此综上考虑,需要做一个百万用户规模架构设计。


存储架构设计


注册

大促日活 300 万,假设用户转化为 APP 用户的概率为 20%,新注册用户为(300 万-100 万)*20%=40 万


登录

正常日活百万,考虑到预留量,登录读取用户信息每天 300 万 QPS。

目前做了 10 个品类,每个品类 20 个商品,考虑预留量为 2 倍,未来总共的商品个数可扩展到 10*20*2=400 个。

假设每个商品所有文本信息约为 200 字节,则商品的数据存储量=10*20*2*0.2M=40M,一个商品图片信息约为 30M,则 图片数据存储量=10*20*2*30M=12G。



计算架构设计

数据量


注册

新用户数量可忽略不计


登录

大促日活 300 万,假设有 40%的活跃用户在前 10 分钟涌入,则 300 万*40%/600s=2000QPS/s。


秒杀

假设 10 台 iphone12 在 1s 内秒完,QPS 为 40 万/1s=40 万 QPS;

1000 个充电宝在 1 小时内秒完,QPS 为 40 万/3600s=100QPS/s。


订单

假设大促当天的订单转化率为 10%,则订单数为 300 万*10%=30 万,订单主要集中在前 2 小时,则 QPS 为 30 万/7200s=400QPS/s




缓存

购物是一个典型的读场景,非常适合用缓存架构,由于请求量大,负载均衡也需要。

秒杀商品十分重要,为了减少受损情况应缓存请求,避免出现雪崩效应,尽量减少丢弃,可以使用漏桶算法的写缓冲。


微服务架构

在原有微服务系统的基础上再增加一个秒杀系统;为保证万无一失,可以做同城双中心。

12 个程序员统一语言为 JAVA,无需多语言开发 SDK,因此微服务框架模式选择嵌入 SDK 模式,如有 RTC 要求,选择 Dubbo,否则选择 Spring  Cloud。

用户头像

五只羊

关注

还未添加个人签名 2021.03.30 加入

还未添加个人简介

评论

发布
暂无评论
架构1期模块九作业