欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

接口幂等性的几种解决方案,你学废了吗?

程序员文章站 2022-05-15 09:24:15
...

  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 操作一般不会出现接口幂等性的问题。