毕业设计项目 - 电商秒杀系统
•1 业务场景
•2 业务复杂度分析
•3 存储架构
•4 缓存架构
•5 负载均衡架构
•6 可扩展设计
•7 高可用设计
•8 完整的技术架构图
1 业务场景
•注册登录、浏览商品、搜索商品、秒杀、下订单、支付
2 业务复杂度分析
•商品种类 <= 200 (10 个品类* 20 )
•用户日活 100 万
•
•假设活跃用户占比 40%,则总共注册用户 100 万/40%=250 万,存储用户信息 250 万条
•存储商品信息 200 条(区分基本信息、图片信息)
•存储订单:1000(1000 个充电宝)+10(10 个 iphone12)条
•存储秒杀信息:1000(1000 个充电宝)+10(10 个 iphone12)条
•存储支付信息:数量与订单类似
•日活 100 万用户,假设系统流量高峰集中在上午 9-11 点、下午 15:00-17:00 和晚上 21:00-23:00,共 6 个小时。
•注册登录 tps:100 万*1/6/3600=约 50
•假设平均每个人浏览 20 个商品,则查看商品 qps~~100 万*20/6/3600=约 1000,搜索商品 qps 小于 1000
•假设平均每个人买 2 个商品,则下单 tps:100 万*2/6/3600=约 100,支付 tps 最高也是约 100
•
•618 秒杀时,假设秒杀时间定在晚上 21 点整,则此时秒杀交易 tps 最高可达:100 万。为尽可能减少对服务器的压力,需要尽可能将页面静态化,将 css,js,图片等静态资源存储到 CDN。这样在秒杀前的用户访问请求到达不了应用服务器,直到秒杀开始后,点击“秒杀”的那一下,访问请求才访问应用服务器。
•秒杀下单 tps:1000+2=1002。
•综合考虑,存储数据量和 tps,单个 mysql 服务器差不多能应对关系数据的存储与访问。稳妥起见,采用 mysql 主从同步模式。从服务器分担一些主服务器的读请求。
3 存储
4 缓存
根据 2 的分析,多级缓存架构如下:
其中 redis 采用 redis cluster 分片模式:
5 负载均衡
6 可扩展
•秒杀场景对服务性能要求很高,所以应将秒杀作为单独的微服务,避免影响其它服务,与用户、商品、订单、支付等服务独立开。
7 高可用架构
8 完整的技术架构图
版权声明: 本文为 InfoQ 作者【小朱】的原创文章。
原文链接:【http://xie.infoq.cn/article/b2eadf108be4595f053f630a9】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论