面试:经典问题解决思路

1. 秒杀系统架构

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

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

重复提交原因:

  1. 一种是由于用户在短时间内多次点击下单按钮,或浏览器刷新按钮导致。
  2. 另一种则是由于Nginx或类似于SpringCloud Gateway的网关层,进行超时重试造成的。
方案 描述 优点 缺点
方案一 提交订单按钮置灰 简单易实现,常用于短信验证码场景 只能解决多次点击下单按钮的问题
方案二 设计一个服务,预生成全局唯一订单号,如UUID,提交订单前先取这个唯一单号ID,然后带上ID提交,在后端通过唯一索引做幂等和防重 要多请求一次、多增加了一个分布式服务、QPS高时服务压力大、数据库多设计了一个单号字段
方案三 修改方案二,由前端生成唯一订单号 比方案二少一次服务请求,服务器压力降低 依然需要新增字段
方案四 使用用户id+分隔符+商品ID拼成一个临时标识符,用它做key在redis上生成一个校验对象,并过期自动删除,提交时用这个key做校验防止重复提交 只需要后端修改、不需要修改数据库
相关推荐
每次的天空2 小时前
Android第三次面试总结之网络篇补充
android·网络·面试
Hello World......5 小时前
互联网大厂Java面试:从Spring到微服务的全面探讨
java·spring boot·spring cloud·微服务·面试·技术栈·互联网大厂
wuqingshun31415911 小时前
蓝桥杯 16. 外卖店优先级
c++·算法·职场和发展·蓝桥杯·深度优先
緈福的街口12 小时前
【leetcode】2900. 最长相邻不相等子序列 I
算法·leetcode·职场和发展
supingemail16 小时前
面试之 Java 新特性 一览表
java·面试·职场和发展
laowangpython17 小时前
MySQL基础面试通关秘籍(附高频考点解析)
数据库·mysql·其他·面试
诸葛大钢铁18 小时前
如何免费在线PDF转换成Excel
职场和发展·pdf·excel
测试者家园20 小时前
用 VS Code / PyCharm 编写你的第一个 Python 程序
ide·vscode·python·职场和发展·零基础·pycharm·零基础学python
小羊在奋斗20 小时前
【LeetCode 热题 100】二叉树的最大深度 / 翻转二叉树 / 二叉树的直径 / 验证二叉搜索树
算法·leetcode·职场和发展
默心21 小时前
运维工程师面试经验分享
运维·经验分享·面试