13518219792

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

100W并发秒杀系统架构

一 百万并发秒杀概述

1.1 可能遇到问题

在一瞬间服务出现大量请求,服务可能会崩溃。

创新互联公司,是一家集策划、设计、技术开发一体的专业互联网产品服务公司,致力于为企业信息化提供驱动力。技术团队10多年来致力于为客户提供企业网站定制,手机网站开发。先后服务了千余家客户,包括各类中小企业、高校、政府。 创新互联公司将利用公司在过去10多年的资源积累,力争为客户打造真正革命性的口碑产品!

在秒杀商品时候,可能出现超卖。

1.2 秒杀的业务流程

秒杀的商品有热点商品和非热点商品,热点商品可能流量占整个的90%.

后台商品管理可以将商品加入到秒杀商品,根据商品访问量分位热点商品和非热点商品。

用户抢到商品支付,发货商品。超时不付款,订单取消。

二 秒杀架构

秒杀系统架构图

Lua脚本对JWT校验:

用户请求到达nginx,用lua脚本进行jwt校验,减少非法请求对服务器的访问。从而减少服务器压力。

2.1 静态页面处理

1. 后台将设置商品成为秒杀商品流程:

2. 商品数量修改,静态页面的同步(canal数据同步):

3. 静态页面的生成和删除:

2.3 将秒杀热点数据隔离

2.3.1 日志收集

用户访问商品详情,首先请求经过nginx,然后使用nginx和lua脚本对请求商品详情路径进行拦截,然后将请求商品数据发送到kafka。数据库接受到kafka数据,完成商品浏览数据收集。

2.3.2 数据分析

Apache Druid订阅Kafka从而获取商品的访问日志,druid能实时获取商品访问记录。druid支持sql,对数据进行分析。找出热点数据。

 
 
 
 
  1. # lua脚本发送给kafka日志格式 
  2.    "actime": "2020‐4‐10 9:50:30",   
  3.    "uri": "http://192.168.211.137/items/S1235433012716498944.html",   
  4.    "ip": "119.123.33.231",    
  5.    "token": "Bearer ITHEIMAOOPJAVAITCAST"  

2.3.3 热点数据隔离

可以采用定时任务(elastic-job)实时查询Druid,把近期访问量最多的商品放入redis缓存中。缓存中数据如下:商品库存,价格,名称等。

备注:

用户进行下单时候,在redis中就是热点商品,走热点下单。不在redis中不是热点商品,走服务直接下单。

在将热点商品放到redis中,需要根据商品的锁定字段,将商品锁定。然后再将商品信息放到redis中。用户抢购商品和热点商品放到redis中同时进行,导致库存混乱。

2.4 热点商品和非热点商品抢购流程

需要判断当前用户对当前商品24小时内是否抢过。判断抢购商品是冷商品还是热门商品。判断库存是否充足。

1. 非热点商品秒杀:

2. 热点商品秒杀:

三 流量监控

在秒杀项目中需要集成Sentinel进行限流操作。在秒杀过程中冷门商品变为热门商品时候,访问服务流量瞬间激增,需要采用Sentinel进行限流,保护服务的稳定性。


网页名称:100W并发秒杀系统架构
本文路径:http://cdbrznjsb.com/article/ccejhsp.html

其他资讯

让你的专属顾问为你服务