1 分钟
秒杀业务场景实现
1、秒杀业务的特点
- 并发性要求高
2、利用Redis实现
(1)预备数据
上线前,将待秒杀产品的产品的ID放入Redis的Set中
(2)秒杀服务
该程序要求可以做集群,所以秒杀业务的状态必须是所有节点可读写的
实现:
- 检测登录
- 检测用户是否已经参与
- 检测商品数量
- 下发商品:
- 将产品ID从待秒杀的Redis集中pop出
- 将产品ID、用户ID等相关信息放入已秒杀的Redis集中
- 返回商品ID
- 后台启动一个线程进行已秒杀产品-用户信息的持久化
- 可以使用线程池,在秒杀服务的Service中启动线程进行持久化
- 注意此时要使用一个分布式锁方式多个线程都在持久化,浪费资源
- 分布式锁,使用Redis就可以实现(Spring Redis的setIfAbsent)
- 返回产品ID或者失败
(3)实现一个负载均衡服务
前端发起秒杀时,先请求负载均衡服务,获取较空闲节点的地址