标签:#架构设计 #幂等性 #Redis #数据库 #分布式系统 #面试必问
💣 前言:即使前端置灰了按钮,后端也必须防重
很多初级开发者认为:“我在前端点击按钮后,把按钮置灰(Disabled)不就行了吗?”
太天真。
- 懂点技术的用户可以直接调 API 接口。
- 弱网环境下,请求发出去了但响应没回来,网关层或 RPC 框架(如 Dubbo)可能会触发自动重试机制。
后端必须视所有请求为“不可信”的,必须在业务层实现幂等。
🧱 一、 最后一道防线:数据库层方案
这是最“硬”的方案,兜底用的。
1. 唯一索引 (Unique Key)
最简单粗暴。利用数据库的主键约束。
比如“用户签到”,每天只能签一次。
-- 建立联合唯一索引ALTERTABLEuser_signADDUNI