参考资料来源:百度贴吧
你好,很高兴回答你的问题。这种问题,有相对成熟的机制来解决。这种机制叫分布式锁。
其实和单机部署时的同步锁类似,单机部署是一个线程获取到锁之后,另一个线程因为获取不到锁就不能和上一个线程同时执行。
分布式锁道理类似,这个锁一般会由一个独立于部署的多个服务实例之外的系统来解决。比如redis,redis有个方法是setNx(key)这个方法是原子性的,如果redis中不存在key对应的数据,则会存入,相当于获取到锁,如果redis中已经存在key对应的数据,说明锁已经被占用,就会返回false。
放服务实例处理完这个业务功能后可以删除掉redis中的数据,相当于适当锁。
为了防止因意外情况导致不会执行释放锁的操作,可以给存入redis的数据设置一个过期时间,如果时间到了,数据还没有被删除,redis会自行删除这条数据。
如果有帮助到你,请点击采纳。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)