博主信息
博文 110
粉丝 0
评论 0
访问量 228995
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
接口幂等性的几种解决方案,你学废了吗?
Coco
原创
2404人浏览过

  1.在分布式场景下,尤其是高并发和跨服务的重试机制,必须要考虑到接口的幂等性的问题。

  幂等性是什么

  什么是幂等性,幂等性,同一用户,多次调用同一个接口,返回的结果,必须相同。

  Insert接口的幂等性解决方案

  1.使用分布式锁保证幂等性。

  比如在,在秒杀的场景下,一个用户只能购买同一个商品,一次的解决方案,采用用户id,存储到redis中。使用redis中的setNx操作,等待自然过期

  2.使用token机制保证幂等性。

  比如用户注册时,用户点击多次注册按钮。我们在用户给后台传入一个token,后台将这个token用作分布式锁。执行成功后不释放锁。等待自然过期。

  3.使用mysql unique key保证幂等性。

  比如用户注册是时候,用户虽然点击多次注册按钮。是不是会注册多个用户呢。我们可以将手机号作为唯一key,就是一个手机号只能注册一次。

  update接口的幂等性。

  1.比如用户购买商品的时候,减库存的时候,由于网络的问题,减库存可能调用多次。出现库存减了多次。

  数据库乐观锁实现

  UPDATE order SET COUNT=COUNT -1 version=version+1 where id=1 AND Version=1

  DELETE 和SELECT 操作一般不会出现接口幂等性的问题。

本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学