系列文章目录
01-1 JVM-线程与内存区域
一、秒杀系统有哪些场景特点
- 在秒杀时刻大量用户会在同一时间进行购买操作,网站的瞬时访问流量激增。
- 秒杀往往是请求数量远远大于库存数量,只有少部分用户能秒杀成功。
二、设计理念及架构原则
1、设计理念
- 限制大部分流量、只允许少量流量进入服务后端。
- 将高峰值流量变成一段时间平稳的流量,常用缓存和消息中间件。
- 采用异步处理模式可以极大地提升系统并发量。
- 将部分数据或业务逻辑转移到内存缓存。
- 拓展机器
2、架构原则
- 数据尽量少
- 请求数尽量少
- 路径尽量短
- 依赖尽量少
- 不要有单点
三、设计思路及方案
1、设计思路
- 将请求拦截在上游、降低下游压力。
- 充分利用缓存。
- 使用消息队列等中间件。
2、设计方案
2.1、前端
- 页面静态化(CDN):将可以静态的元素静态化、尽量减少动态元素。
- 禁止重复提交:提交后按钮置灰。
- 用户限流:例如IP限流等
2.2、后端
- 限制uid访问频率。
- 采用消息队列缓存请求
- 利用缓存应对读写请求
2.3、数据库
是最薄弱的一层、必须在上层将请求处理完全。
四、常用的方案落地
- 秒杀界面CDN
- 秒杀按钮优化
- 秒杀链接优化
- 秒杀验证码
- 过滤请求
- Redis缓存
- 异步更新数据库