最新文章

推荐文章

热门文章

您的当前位置:洁癖 > 治疗医院 > 基础管理Tair分布式锁

基础管理Tair分布式锁



基础管理Tair分布式锁

导语

在JVM中,怎么样防止因多线程并发造成的数据不一致或逻辑混乱?大家一定都能想到锁,能想到java.util.concurrnt包下的各种各样的用法。

但在分布式环境下,不同的机器、不同的jvm,那些好用的并发锁工具,并不能满足需要。

所以我们需要有一个分布式锁,来解决分布式环境下的并发问题。而本文正是在这条道路上,走出的一些经验的总结。

我们按照待解决问题的场景,一步一步看下去。

问题一:如何实现一个分布式锁

锁,大多是基于一个只能被1个线程占用、得到的资源来实现的。

JVM的锁,是基于CPU对于寄存器的修改指令cmpxchg,来保证旧值改为新值的操作,只有一个能成功。这里的旧值,就是这个被争夺的资源,大多数情况,并发时第一个线程对旧值修改成功后,其他线程就没有机会了。(当然,ABA是另外一个话题,这里就不说了。。)

所以,在分布式环境下,要实现一个锁,我们就要找个一个只能被1个线程占用的资源。

有经验的开发很快能想到,共享磁盘文件、缓存、mysql数据库,这些分布式环境下,数据表现为单份的,都应当能满足需求。

然而,基于文件、DB会遭遇各式各样的问题,性能,经常也会是瓶颈。

因此,我们这里使用的,是淘系用的最多的缓存中间件产品--Tair。

查看







































四川治疗白癜风的医院
北京白癜风医院哪里比较好


转载请注明:http://www.qzegt.com/zlyy/852.html