幂等性以及怎么实现幂等性

概念

 我们实际系统中有很多操作,是不管做多少次,都应该产生一样的效果或返回一样的结果。

  例如:前端重复提交选中的数据,应该后台只产生对应这个数据的一个反应结果。等等很多重要的情况,这些逻辑都需要幂等的特性来支持。

实现方案

  1. 数据库唯一索引,防止新增脏数据。
  2. token机制,防止重复提交

    token的意思是“令牌”,是服务端生成的一串字符串,作为客户端进行请求的一个标识。

    当用户第一次登录后,服务器生成一个token并将此token返回给客户端,以后客户端只需带上这个token前来请求数据即可,无需再次带上用户名和密码。

    简单token的组成;uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,token的前几位以哈希算法压缩成的一定长度的十六进制字符串。为防止token泄露)。

  3. 分布式锁
    zookeeper或者redis都可实现。
  4. 对外第三方api。一般要求提供唯一字段组成唯一索引。
  5. 数据库乐观锁。

    update account set price=100,version=2 where version=1

     

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值