Welcome everyone

剑指幂等性

分布式 汪明鑫 12浏览 0评论

幂等性 : 多次相同参数的请求,返回相同的结果或产生一样的效果。

 

比如系统A对系统B做一个数据插入操作,如果网络超时调用失败,A会对B重试调用,因此B系统该接口必须支持幂等,否则会出现插入重复数据。

 

查询和删除都是天然的幂等性操作。

 

幂等性通用解决方案

关键点:设计幂等性的唯一标识符

 

 

如果需要考虑并发性

 

加入全局分布式锁

 

有时也可以通过加唯一索引uk,避免出现插入重复数据(比如插入2笔相同的订单)

在数据库做兜底

 

在订单场景下,一般幂等性的唯一标识符为订单id

 

再举2个例子:

demo1 网易新闻推送

新闻的推送也要遵循幂等性

幂等性的唯一标识符是 docId + deviceId  (文章id + 设备id) ?

当然不是!!!

为啥?

因为一篇文章可能多次推送给同一个手机,

比如一个文章在直播前一天推送,直播前1小时推送,直播中推送,直播后推送重播;

因此幂等性的唯一标识符为每次推送任务而产生的taskId

 

 

demo2 抢红包

避免因网络延迟等原因造成重复请求接口

使一人抢到多次红包

转载请注明:汪明鑫的个人博客 » 剑指幂等性

喜欢 (0)

说点什么

您将是第一位评论人!

提醒
avatar
wpDiscuz