接口幂等性——无论你调用多少次,结果都一样的超能力! 就像你按电梯按钮,按100次也不会让电梯来得更快,但电梯还是会来。
为什么需要这个"后悔药"?
网络抽风:客户端等了半天没响应,心想"我再试一次吧",结果服务器其实已经处理完了
用户手抖:用户疯狂点击提交按钮,仿佛在玩节奏游戏
系统重试:微服务架构中,上游服务觉得你可能挂了,好心帮你重试几次
实战开始:给接口穿上"防重复甲"
第一步:令牌大法——领号排队
就像银行办业务先取号,办完业务号码就作废。
@Service
public class TokenService {
@Autowired
private RedisTemplate<String, String> redisTemplate;
private static final String TOKEN_PREFIX = "IDEMPOTENT_TOKEN:";
/**
* 生成幂等令牌 - 就像发排队号码
*/
public String generateToken(String businessKey) {
String token = U