幂等性是什么?
电梯按钮你按十次,它也只响应一次;网购时你狂点「支付」,理想情况下也只会扣一次钱。这种「重复做多少次,结果都一样」的性质,就叫幂等性(Idempotency)。为什么 Agent 特别需要它?
Agent 会重试网络抖动、超时、报错……Agent 经常需要「再来一次」。如果重试一次就多扣一次钱,灾难就来了。
多个 Agent 可能重复干同一件事
分工协作时,两个 Agent 可能同时去执行同一个动作。幂等能让重复执行「无害」。
幂等 vs 非幂等
幂等操作读数据、设置一个确定的值(PUT)、删除指定资源——做多少次结果都一样。
非幂等操作
「给账户加 100 元」这种累加操作,每执行一次就变一次,需要额外的幂等键来保护。
怎么实现幂等?
给请求带唯一 ID客户端每次操作生成一个幂等键,服务端记录「这个键已经处理过」,重复的请求直接忽略。
用「确定值」代替「累加」
尽量把操作设计成「设成 X」,而不是「再加 1」。
数据库层兜底
唯一索引、事务等手段,能从存储层挡住重复写入。
一句话记住:幂等,就是「重复做,不重复算」。
评论