架构训练营模块九作业
存储性能估算
1000 个充电宝,10 台 iPhone 12。使用 mysql 主备存储。
用户信息直接从用户的数据库读取。
计算性能估算
日活一百万用户,假设参加秒杀的用户为一百五十万。
80%的用户秒杀前五分钟内平均登录,20%前十分钟内平均登录,则登录 TPS 峰值估算为 4000
假设用户登录之后直接打开秒杀页面,查看秒杀商品,则商品查询 TPS 峰值与登录相同为 4000
假设用户秒杀动作集中在秒杀时间前后一秒内,则 TPS 估算为 500000
负载均衡
使用 LVS keeplived 做负载均衡

缓存
用户日活一百万,假设全部用户数据六百万。使用 mysql 可以存储。秒杀 TPS 预估为五十万,需要对用户数据做缓存。
假设最近一周登录过的用户会参与秒杀,提前将这部分用户数据缓存。预估这部分数据两百万。
使用 redis cluster 来完成这两百万数据的读取。
商品信息,介绍等结合使用 app 缓存和 web 容器缓存

高可用
目前只有单机房,一年中大促的次数较少,搭建双机房成本较高。通过在单机房内做服务器冗余来提供高可用。

可扩展
团队已经落地微服务架构,秒杀系统可以很方便的作为一个微服务加入其中。暂无扩展
其他
下载 App 才可以参与秒杀。对 App 的下载在一段时间内会比平常更高,可能会对机房带宽造成较大符合。团队若有 cdn,可以把 apk 提前缓存至 cdn 中,降低机房压力
评论