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