首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

分布式高并发系统保证对外接口的幂等性的方法(二)

现在程序员也是一个很吃香的职业,自从进入互联网时代之后,就出现了大量需要程序员的岗位,在码农的日常工作中,需要解决分布式高并发系统保证对外接口的幂等性这类问题。

为了解决接口超时方面的问题,通常会引入失败重试机制。请求接口超时了调用方可能会重发该请求,这样也会导致重复提交。再如,消息中间件在消费消息时,有时可能会读取到重复消息,如果处理不好,也会产生重复提交的情况。

可以加悲观锁,将把该条账户信息锁住,不允许并发操作。但是这种操作严格意义上来讲不是防幂等,只是确保这条数据不会因多线程并发而导致更新错误,但结果还是能确保数据的最终一致性。

在服务器端,生成一个唯一的标识符,将它存入session,同时将它写入表单的隐藏字段中,然后将表单页面发给浏览器,用户录入信息后点击提交。

很多时候 HTTP 客户端工具都默认开启超时重试的机制,尤其是第三方调用接口时候,为了防止网络波动超时等造成的请求失败,都会添加重试机制,导致一个请求提交多次。

针对客户端连续点击或者调用方的超时重试等情况,例如提交订单,此种操作就可以用 Token 的机制实现防止重复提交。

如果 Key 存在且 Value 匹配就执行删除命令,然后正常执行后面的业务逻辑。如果不存在对应的 Key 或 Value 不匹配就返回重复执行的错误信息,这样来保证幂等操作。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230525A033T800?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券