周宇航

周宇航 Damien Collins

在南京工程学院读网络工程。写 Java 后端,也做 RAG 与 Agent 评测 —— 习惯先把底层量清楚:秒杀先从入口把流量削下去,问答先把召回和引用量出来,再谈效果。

南京 · 本科在读 · 随时可以聊

秒杀入口

Lua 脚本内原子完成时间窗校验、一人一单、库存预扣

进入 0
放行 0
拦下 0

动画示意:800 个并发请求进入秒杀接口,Redis Lua 脚本原子完成校验与预扣, 放行 96 个,其余在入口被拦下,数据库始终没有超卖。

项目

四个都开源 · 点开看怎么做的

秒杀入口
请求先过一段 Redis Lua 脚本,时间窗校验、一人一单、库存预扣在同一个脚本里原子完成,不会出现扣了库存却没记下用户的情况。通过后投一条 RocketMQ 消息,下单在消费者里异步落库,接口不等数据库事务。
一致性
扣减用带库存条件的 UPDATE,卖完就扣不动;同一用户重复提交由唯一索引挡掉;订单超时未支付,延迟消息关单,定时扫描再兜一层,两条通道都能把库存加回去。
搜索
商品文本向量化存进 Elasticsearch,BM25 关键词召回和 kNN 语义召回并行跑,再按 RRF(k=60)用排名融合,绕开两路分数量纲不一致的问题。

结果 秒杀零超卖、零重复下单,售罄时数据库无效事务降到 0,入口吞吐提升 2.7 倍,P99 延迟降低 54%。混合搜索 Recall@10 从 0.54 提到 0.88,NDCG@10 从 0.50 提到 0.85。

  • Java 21
  • Spring Boot
  • Redis
  • RocketMQ
  • Elasticsearch
AI-Mall 商城首页:米白底,顶部导航为秒杀活动、本周精选、人气好物,主视觉是秋季专题大图,右下角是砖红色「开始选购」按钮。
看仓库

问点什么

只答本站项目与公开背景,其余直说不知道

Enter 发送,Shift + Enter 换行 · 回答由 AI 生成,可能有误,重要信息请邮件确认