# seckill **Repository Path**: libra0920/seckill ## Basic Information - **Project Name**: seckill - **Description**: 秒杀项目学习 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-04-14 - **Last Updated**: 2025-04-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### jMeter的使用 > ### 秒杀活动如何解决超卖 > 扣减操作要原子化 > > 如果库存在数据库,扣减时判断下库存 > update goods set stock_count=stock_count-1 where stock_count>0; > > 如果库存在Redis,则要使用Lua脚本来扣减 > > 另一个极端方案,就是加分布式锁,一个一个下单。完全不支持并发 > ### 如何解决重复下单 > 这块搞少点用户,多点商品,压测试下 > ### 如何提高并发能力 > 数据库压力大,搞redis缓存 > > redis压力大,搞进程内缓存标记一下售馨状态 > > 或者限流,反正最终目的就是减少无效请求 > ### 异步下单 > 使用消息队列削峰 > > 库存放在Redis中,扣减库存仍然要保证原子性,使用LUA脚本 > ### 如何防止机器刷接口 > 1. 访问页面时生成令牌,携带令牌的才允许调用接口 > > 2. 验证码 > > 3. 不在js里暴露接口,秒杀前查询秒杀接口Url ### 隐藏接口 > 秒杀时不直接调用秒杀接口 > > 先调接口查询秒杀url+访问令牌,再调用这个url携带上令牌 > ### 限流算法 > 计数器、令牌桶、漏桶 >