分布式锁

2018-12-20 09:33:41来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

当项目使用分布式架构时,就会有可能出现客户端数据重复提交的情况

  比如,当你向服务器发起一个借贷命令时,如果手速够快,可能会向后台的两个拨款服务器发起同一个请求

此时, 如果不进行处理, 后台可能会向用户拨款两次, 但是用户只有一次的借钱记录. 

 

这时, 也是用到了常用sso登录时的技术Redis, 前台向后端发起某个请求时, 拿到请求的这台服务器会去访问Redis 使用Redis的setnx方法

如:

setnx  user1 lock

这样如果该user1是第一次存入redis ,会返回1  相当于拿到这个请求处理的锁,可以继续执行,  如果不是第一次,则会返回0,说明没有拿到处理的锁

这个时候,此台服务器就没有必要继续执行. 这就起到了分布式锁的作用

 

而且,本身redis是单线程的,在一个客户端登录之后,其他客户端无法登陆和操作.这就有了安全保证

 

同时, 如果项目在拿到这个分布试锁的时候,服务器宕机了, 但是redis中已经存在了相应的key, 那么程序就会出现思索的情况,因此,在创建这个锁的时候

最好给他设定一个超时时间, 如多这段时间内,这个锁没有被销毁,则会自动销毁.

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:阿里,百度面试90%会问的Java面试题

下一篇:撩课-Java每天5道面试题第23天