分布式锁
分布式系统中,为了保证数据一致性,常用到分布式锁。比如主从服务器,选主可通过争抢锁实现。
常用的方式:
1、基于数据库做乐观锁(比如基于版本号的字段更新)。
2、基于memcached的add()方法。
3、基于memcached的cas()方法。
4、使用redis的setnx()、expire()方法,用于分布式锁
5、使用redis的setnx()、get()、getset()方法,用于分布式锁。
6、使用redis的watch、multi、exec命令,用于分布式锁。(不常用)
7、使用zookeeper,用于分布式锁。(不常用)
其中,zookeeper做分布式锁:
每个客户端对某个方法加锁时,在zookeeper上的与该方法对应的指定节点的目录下,生成一个唯一的瞬时有序节点。 判断是否获取锁的方式很简单,只需要判断有序节点中序号最小的一个。 当释放锁的时候,只需将这个瞬时节点删除即可。同时,其可以避免服务宕机导致的锁无法释放,而产生的死锁问题。
相关推荐
savorTheFlavor 2020-10-23
smartbaby 2020-11-11
夙梦流尘 2020-09-23
峰哥 2020-09-23
互联网架构之路 2020-09-03
zhangll00 2020-07-29
大胡子抽雪茄 2020-07-19
middleware0 2020-07-19
Cheetahcubs 2020-07-18
manongxiaomei 2020-07-05
wqbala 2020-07-04
憧憬 2020-07-04
caifengguo 2020-06-28
亦碎流年 2020-06-18
loviezhang 2020-06-17
wangyjbk 2020-06-15
wqbala 2020-06-14
hweiyi 2020-06-14