写点什么

架构实战营|模块 9

作者:KDA
  • 2022 年 8 月 18 日
    江苏
  • 本文字数:728 字

    阅读完需:约 2 分钟

架构实战营|模块9

一、性能估算

1、根据业务背景分析,正常的日活大越 100 万用户,秒杀活动日活会远大于平时,按 5 倍预计,即日活 500 万用户。

2、本次秒杀是为了促进用户转化为 APP 用户,所有参与用户下载 APP,这里会涉及到原小程序用户的转移和少部分新注册用户且只需下载 1 次客户端即可,对现有系统不会造成太大影响。

3、秒杀活动商品是 1000 个充电宝和 10 台手机,数据库事务处理量小,不需要过多的数据库设计。

4、秒杀活动基本在几秒内完成,这里假设在 10 秒内完成,假设 500 万用户在 10s 内都进行了秒杀操作,则秒杀的 QPS 是 30 万/s。

二、架构设计

1、存储架构设计

根据性能分析,秒杀商品的数量很少,只需使用 mysql 进行数据存储即可,考虑到数据库的高可用,使用 mysql 主备模式即可。


2、计算架构设计

技术团队以 Java 为主,已经落地了微服务架构,所以可以将秒杀单独出来作为一个微服务进行部署,可以较少对其他服务的影响。

秒杀系统短时间内容会有大量的请求,所以需要多台服务器进行负载均衡,服务器内部可以使用消息队列进行处理,以最先的 1000 多个请求作为实际消费者,获取订单信息。


3、缓存架构设计

一般用户会在秒杀活动开始前提前进入到应用中的秒杀页面,假设 500 万用户提前 1 分钟进入页面,QPS 为 500 万/60s=8 万/s,redis 的处理性能在 10 万/s,所以这里使用 redis 做缓存即可。


4、高可用架构设计

目前只有单机房,不具备多机房的条件,只能做好应用的高可用,使用多个应用服务集群,数据库使用主备,redis 使用集群模式,保证了简单的高可用。


5、可扩展架构设计

秒杀服务使用微服务,本身具备良好的扩展性,通过负载均衡进行水平扩展。


6、最终架构方案


7、架构演进

在后续商品规模上来后进行多机房的部署,提升高可用性。在用户规模和流量上来后需要考虑加入业务操作限流,是整个系统保持良好运行状态。

用户头像

KDA

关注

还未添加个人签名 2019.05.08 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营|模块9_#架构实战营_KDA_InfoQ写作社区