面试:经典问题解决思路

1. 秒杀系统架构

参考:秒杀系统架构优化思路

2. 如何防止订单重复提交

重复提交原因:

  1. 一种是由于用户在短时间内多次点击下单按钮,或浏览器刷新按钮导致。
  2. 另一种则是由于Nginx或类似于SpringCloud Gateway的网关层,进行超时重试造成的。
方案 描述 优点 缺点
方案一 提交订单按钮置灰 简单易实现,常用于短信验证码场景 只能解决多次点击下单按钮的问题
方案二 设计一个服务,预生成全局唯一订单号,如UUID,提交订单前先取这个唯一单号ID,然后带上ID提交,在后端通过唯一索引做幂等和防重 要多请求一次、多增加了一个分布式服务、QPS高时服务压力大、数据库多设计了一个单号字段
方案三 修改方案二,由前端生成唯一订单号 比方案二少一次服务请求,服务器压力降低 依然需要新增字段
方案四 使用用户id+分隔符+商品ID拼成一个临时标识符,用它做key在redis上生成一个校验对象,并过期自动删除,提交时用这个key做校验防止重复提交 只需要后端修改、不需要修改数据库
相关推荐
晨米酱2 天前
AGENTS.md:Agent 的上下文策略层
面试·架构·agent
彧azz2 天前
Linux 环境下 Redis 学习总结:数据类型、持久化、锁、事务、主从与缓存问题
linux·redis·笔记·学习·面试
CoderYanger2 天前
A.每日一题:835. 图像重叠
java·开发语言·程序人生·leetcode·面试·职场和发展·学习方法
爱学习的执念2 天前
助力金九银十1000道软件测试面试题(功能、接口、自动化、WEB、APP.......)附答案
软件测试·面试
小的~~2 天前
银河麒麟V10 ARM部署TDengine(涛思)工业时序数据库安装与测试
面试·程序员创富
2401_832298102 天前
人机协同:AI时代全新工作与学习范式
职场和发展
童园管理札记2 天前
从政策驱动到课堂落地:2026年“人工智能+教育”全景解读与技术实践指南
人工智能·python·深度学习·职场和发展·学习方法
小刘在重生~2 天前
Oracle_day2 单行函数|组函数|分组|伪列|子查询|分页|多表连接
笔记·oracle·面试
Sam_Deep_Thinking2 天前
关于java final关键字的可见性
java·后端·面试·程序员
yuanxi2002 天前
卡塔尔能源公司LNG扩建项目首条生产线预计明年投运:大客户销售的5个判断
职场和发展·创业创新·学习方法