【重复处理】CRUD接口幂等性处理

这篇具有很好参考价值的文章主要介绍了【重复处理】CRUD接口幂等性处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

保证幂等性的核心思想:通过唯一的业务单号保证幂等

  1. 非并发情况下,查询业务单号有没有操作过,没有则执行操作
  2. 针对第一次执行业务时间,有大量并发情况下,整个操作过程加锁,通过分布式锁来加锁
  3. Select操作:不会对业务数据有影响,天然幂等
  4. Delete操作:第一次已经删除,第二次删除也不会有影响
    • 根据唯一的业务号删除,第一次删除时间,已将数据删除,第二次再次执行时间,由于找不到相应嘉璐,所以delete删除的结果式0,对业务数据没有影响,可在删除前进行数据库查询
    • 删除操作没有唯一业务号,则要看具体的业务需求,如删除未审核的数据,此时多次删除,可能会有新的未审核的数据,此时如果依然需要保证幂等性,就需要使用token机制来实现
  5. Update操作:更新操作传入数据版本号,通过乐观锁实现幂等性
    • 更新操作如果每次都是相同的值,那么不需要保证幂等性,因为值一样
    • 更新的字段的值操作是变化的,那么就会有影响,此时就是通过传入版本号来实现
    update set version=version+1, xxx=${xxx} where id = xxx and version = ${version}
    
    上述语句在mysql执行时间,是有行锁的,是串行的,及时有多次提交,那么版本号不一致的情况下,也是无法完成update,即实现了幂等
  6. Insert操作:此时没有唯一业务号的,使用Token保证幂等
    • 有唯一业务号的操作,例如:秒杀场景下,商品ID+用户ID必须是唯一的通过分布式锁,保证并发情况下只有一个请求能够生成记录,然后通过数据库的唯一索引控制数据商品ID+用户ID只能有一条记录,保证接口幂等,业务执行完后,不进行分布式锁释放,让其过期自动释放,重拾请求在锁失效前,获得不到锁,也就失败了
    • 没有业务号的操作,如注册、点击多次等,使用Token机制,保证幂等性,在进入到注册页时,后台统一生成Token,返回前台的隐藏域中。用户提交时间,将Token一同传入后台使用Token作为分布式锁的key来获取分布式锁,完成insert操作,执行成功后,不释放锁,等待过期自动释放,拿不到分布式锁的则无法进行操作

文章来源地址https://www.toymoban.com/news/detail-652472.html

到了这里,关于【重复处理】CRUD接口幂等性处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [AIGC] 用幂等性解决重复消息问题

    在构建分布式系统时,开发人员经常会遇到重复消息问题。这可能是由于网络延迟、系统故障或其他原因导致的。无论如何,重复消息会导致系统出现错误和不一致状态。为了解决这个问题,我们可以使用幂等性来确保系统的可靠性和一致性。 在数学中,幂等性是指一个函数

    2024年02月19日
    浏览(33)
  • RabbitMQ防止消息重复消费、保证异步消息的幂等性

    一、rabbitmq出现消息重复的场景 1、消费成功,没有进行ack,这时 Broker 会重新发送 2、不确认(unack)或 reject 之后,重新排队,Broker 会重新发送 3、消费成功,ack时宕机,没有ack成功,消息由unack变为ready,Broker又重新发送 4、总的来说就是 Broker 发送消息后,消费端收到消息

    2024年02月13日
    浏览(45)
  • RabbitMq(七) -- 常见问题:幂等性问题(消息重复消费)、消息丢失

    用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。 举个最简单的例子,那就是支付,用户购买商品后支付,支付扣款成功,但是返回结果的时候网络异常, 此时钱已经扣了,用户再次点击按钮,此时会进行第二次扣款,返

    2024年02月05日
    浏览(38)
  • 腾讯二面:如何保证接口幂等性?高并发下的接口幂等性如何实现?

    什么是接口幂等性 接口幂等性这一概念源于数学,原意是指一个操作如果连续执行多次所产生的结果与仅执行一次的效果相同,那么我们就称这个操作是幂等的。在互联网领域,特别是在Web服务、API设计和分布式系统中,接口幂等性具有非常重要的意义。 具体到HTTP接口或者

    2024年03月19日
    浏览(46)
  • kafka-保证数据不重复-生产者开启幂等性和事务的作用?

    适用于消息在写入到服务器日志后,由于网络故障,生产者没有及时收到服务端的 ACK 消息,生产者误以为消息没有持久化到服务端,导致生产者重复发送该消息,造成了消息的重复现象,而幂等性就是为了解决该问题。 通过3个值的唯一性去重: PID:生产者ID 分区号 seq:单

    2024年02月14日
    浏览(43)
  • 接口幂等性详解

    所谓接口幂等性就是:在特定场景下,同一条件的多次接口调用,保证操作只执行一次,如果接口没有保证幂等性,在以下场景就会产生问题 前端重复提交:用户进行注册、创建个人信息等操作,由于网络抖动导致页面没有及时响应,用户认为没有成功而多次点击提交按钮,

    2024年02月19日
    浏览(41)
  • 如何保证接口的幂等性?

    作者:小牛呼噜噜 | https://xiaoniuhululu.com 计算机内功、源码解析、科技故事、项目实战、面试八股等更多硬核文章,首发于公众号「小牛呼噜噜」 目录 什么是幂等性? 为什么需要保证幂等性? 接口幂等设计和防止重复提交可以等同吗? 常用保证幂等性的措施 先select再inse

    2024年02月08日
    浏览(41)
  • 一个注解实现接口幂等性,真心优雅!

    简单来说,就是对一个接口执行重复的多次请求,与一次请求所产生的结果是相同的,听起来非常容易理解,但要真正的在系统中要始终保持这个目标,是需要很严谨的设计的,在实际的生产环境下,我们应该保证任何接口都是幂等的,而如何正确的实现幂等,就是本文要讨

    2024年02月03日
    浏览(43)
  • 114 接口中幂等性的保证

    同样是 面试问题  如何确保接口的 幂等性  幂等是一个 较为抽象的概念, 多次重复访问, 不会导致业务逻辑的异常  这里从增删改查, 几个方面列一下  一般来说, 我们核心需要关注的就是 新增 和 更新 对于 增加元素, 首先针对唯一约束进行校验, 然后再处理新增的相

    2024年04月23日
    浏览(33)
  • redis如何保证接口的幂等性

    背景 如何防止接口中同样的数据提交,以及如何保证消息不被重复消费,这些都是 shigen 在学习的过程中遇到的问题。今天,趁着在学习 redis 的间隙,我写了一篇文章进行简单的实现。 注意:仅使用于单机的场景,对于分布式、高并发场景,还是建议使用分布式锁。 首先我

    2024年02月09日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包