当前位置:网站首页>电商秒杀系统架构设计
电商秒杀系统架构设计
2022-08-08 14:01:00 【InfoQ】
前言
1. 业务背景

1.1 整体业务分解图

2. 约束和限制
3. 总体架构设计
3.1 设计分析评估


3.1.1 高性能设计分析

3.1.2 高可用设计分析

3.1.3 可扩展设计分析
- 业务服务器可以横向扩展。在非秒杀期间,并不需要太多业务服务器。只有在秒杀期间才需要增加业务服务器
- 对于日活100万情况,我们只需要单机房,未来可扩展为同城双机房。现在双机房备灾,再作双活。双活可以看作单一逻辑机房,不用考虑数据一致性和通信延时。
- 未来日活增加后,可以做异地双机房。由于数据库使用主备架构,可以很容易把备机放在异地机房,成为异地互备。
3.1.4 成本分析
3.2 总体架构设计

3.2.1 客户端设计
3.2.2 负载均衡架构设计

3.2.3 缓存架构设计

4. 详细设计
4.1 核心功能
4.1.1 购买秒杀商品

4.2 关键设计
4.2.1 使用秒杀队列
- 充电宝购买秒杀队列 - 只保存前1100个充电宝购买请求,处理前1000个请求,其他请求直接返回秒杀结束。如果前1000个请求中有购买失败的,比如信用卡信息失效、或请求信息错误,可以从1001个请求开始到1100个请求中按优先顺序选作替补。
- IPhone 12购买秒杀队列 - 只保存前20个IPhone 12购买请求,并处理前10个请求,其他请求直接返回秒杀结束。后10个请求,在当前10个请求失败时作为替补。
4.2.2 数据存储可用性
4.3 设计规范
- 支持HTTPs
- 使用Restful协议提供服务接口
- 数据库支持SQL语言
5. 质量设计
5.1 成本
- 使用开源软件
- 业务系统可以横向扩展。在非秒杀期间,并不需要太多业务服务器。只有在秒杀期间才需要增加业务服务器。
5.2 可测试性
5.3 可维护性
5.4 可观测性
- 系统提供logging系统,便于观看运行流程
- 系统提供后台监控进程,监控运行状态
6. 演进规划
- 负载均衡可以使用F5/LVS
- 增加Redis集群数量
- 增加业务反向代理集群数量
- 数据库可以使用主从,或分片设计。
边栏推荐
- 6. [opencv mouse callback event]
- 南非 KMP 媒体集团实施了 DMS(文档管理系统)使流程数字化,员工可以再次专注于他们的实际任务,提供了效率
- 干货满满,中科院信工所于静新课帮你get学术研究与论文写作技能
- 现在网上开户安全么?接着证券开户选择哪个证券?
- Harvard University smashes the field: DALL-E 2 is just a "glue monster", and the generation accuracy rate is only 22%
- 【黑马早报】巴菲特罕见巨亏近3000亿;周鸿祎回应360不能卸载;三亚倡议酒店不变相提高房价;首个国产抗新冠口服药定价不超300元...
- 树上距离为1子集修改
- qtwebapp库的编译及简单使用
- UnsatisfiedDependencyException: Error creating bean with name ‘
- 华谊“在劫难逃”,4年亏掉64亿
猜你喜欢
随机推荐
教学习编程,第一步解决自信问题,培养自己的专注力
textarea 禁止拖拽
Kotlin系列之let、with、run、apply、also函数的使用
Review: What is the pre-approval of autumn recruitment?What is an ordinary autumn move?It's all recruitment, why do you need to set these two recruitment time periods?
华为云会议初体验【华为云至简致远】
logistic regression model - based on R
腾讯,投了个 “离诺贝尔奖最近的华人”
变量和函数的声明提前
Time to update your tech arsenal in 2020: Asgi vs Wsgi (FastAPI vs Flask)
接口测试,
一桩事先张扬的网红书店倒闭案
itk中生成drr整理
干货满满,中科院信工所于静新课帮你get学术研究与论文写作技能
Flink1.15 组件RPC通信过程概览图
良心到难以置信的网站推荐第7期丨全程干货
【Rust—LeetCode题解】1408.数组中的字符串匹配
egg.js框架的基本设置 及 使用
[Redis] Bitmap and usage scenarios of bitmap (statistics of online people and user online status)
R语言ggplot2可视化:使用ggpubr包的ggbarplot函数可视化堆叠的柱状图(stacked bar plot)、palette参数自定义不同水平柱状图边框以及填充的颜色
清华|GLM-130B:一个开放的双语预训练模型