当前位置: 首页 > backend >正文

常见系统设计

秒杀系统

  • 前端层:
    静态资源缓存:通过CDN缓存商品图片、页面静态HTML,减少回源请求。
    请求合并:合并用户频繁刷新的请求(如10秒内仅允许一次真实请求)。
    端侧限流:通过JS或APP端限制用户高频点击(如倒计时按钮禁用、点击后置灰)。
  • 接入层:
    负载均衡:使用LVS/Nginx实现流量分发,结合IP Hash或一致性哈希减少后端压力。
    请求队列:引入Kafka/RocketMQ缓冲瞬时流量(削峰填谷),按后端处理能力消费。
    边缘计算:在CDN边缘节点拦截非法请求(如未登录用户、IP黑名单)。
  • 服务层:
    服务拆分:将核心功能(库存扣减、订单创建)与非核心功能(日志、通知)解耦。
    读写分离:读服务(查询库存)与写服务(扣库存)独立部署,避免相互影响。
    热点隔离:为秒杀商品分配独立资源池(专用集群、线程池、数据库连接池)。
  • 存储层:
    缓存抗压:库存预加载至Redis集群(使用Lua脚本实现原子化扣减)。
    分库分表:订单库按用户ID分片,库存库按商品ID分片,降低单点压力。
    最终一致:通过MQ异步同步缓存与数据库,允许短暂不一致但最终收敛。

问题处理

  • 超卖
    • 预扣库存:采用预扣除而非实时扣减(例如Redis原子化操作lua)
local stock = tonumber(redis.call('GET', KEYS[1]))
if stock > 0 thenredis.call('DECR', KEYS[1])return 1  -- 扣减成功
elsereturn 0  -- 库存不足
end
//库存要>0
UPDATE stock SET quantity = quantity - 1 
WHERE item_id = #{itemId} AND quantity >= 1;
  • 热点数据竞争
    缓存预热:在秒杀开始前将库存数据加载到Redis并禁止直接访问DB。
    Key分片:将热点商品的库存拆分为多个Key(如item_stock_1, item_stock_2),分散访问压力。
    本地缓存+延迟双删:在服务节点本地缓存库存数据,结合延迟删除策略减少Redis访问。

  • 异步订单处理
    扣库存成功 → 发送消息到MQ → 订单服务消费并生成预订单。
    支付服务异步回调确认,更新订单状态并扣减数据库库存。

http://www.xdnf.cn/news/13637.html

相关文章:

  • 2024蓝桥杯C/C++ B组国赛
  • C primer plus (第六版)第七章 编程练习第4题,第5题
  • SecureRandom.getInstanceStrong() 与虚拟机的爱恨情仇
  • ImportError: cannot import name ‘PfeifferConfig‘ from ‘transformers‘【已解决】
  • 考试中关于机动车安全技术检验标准(如 GB 7258、GB 21861 等)的考核重点有哪些?
  • java单元测试写法
  • Element:Table表头全部或单个表头颜色header-row-style
  • 鸿蒙开发:DevEcoTesting中的稳定性测试
  • 【Python 算法零基础 6.贪心算法】
  • 基于51单片机和8X8点阵屏、独立按键的跳跃躲闪类小游戏
  • 在WordPress中彻底关闭生成缩略图的方法
  • c++经典好题
  • 机器学习基本概念与建模流程
  • day031-Shell自动化编程-数组与案例
  • 【全开源】码小象租车系统源码+uniapp前端+开发文档接口
  • 【粤语ASRTTS】粤语语音识别与合成:重塑粤语智能化标杆
  • android studio开关控制
  • 小知识点二:无刷电机开环控制
  • 创建型设计模式
  • linux系统实时监控top命令
  • Spring Boot 完整教程 - 从入门到精通(全面版)
  • 鹰盾视频加密器播放器倍速播放中变速不变声的技术原理解析
  • 开源生态新势能: 驱动国产 DevSecOps 与 AI 工程新进展
  • DeepSeek-R1与Claude 4.0 Sonnet:开源与闭源大模型的商业生态博弈
  • 快速生成树协议(RSTP)深度解析
  • 基于 tinyfsm 的状态机
  • 未来智能设备的三大核心能力:自检测、自修复与自决策
  • 套接字类型与协议设置
  • 微信小程序之页面跳转(路由),navigateTo redirectTo reLaunch
  • 大型语言模型的中毒攻击的系统评价