Zookeeper实现分布式锁 (zookeeper什么意思)

教程大全 2025-07-07 16:07:46 浏览

实现分布式锁目前有三种流行方案,分别为基于数据库、Redis、Zookeeper的方案,其中前两种方案网络上有很多资料可以参考,本文不做展开。我们来看下使用Zookeeper如何实现分布式锁。

排他锁(Exclusive Locks),又被称为写锁或独占锁,如果事务T1对数据对象O1加上排他锁,那么整个加锁期间,只允许事务T1对O1进行读取和更新操作,其他任何事务都不能进行读或写。

定义锁:

Zookeeper实现分布式锁
/exclusive_lock/lock

实现方式:

利用 zookeeper 的同级节点的唯一性特性,在需要获取排他锁时,所有的客户端试图通过调用 create() 接口,在 /exclusive_lock 节点下创建临时子节点 /exclusive_lock/lock,最终只有一个客户端能创建成功,那么此客户端就获得了分布式锁。同时,所有没有获取到锁的客户端可以在 /exclusive_lock 节点上注册一个子节点变更的 watcher 监听事件,以便重新争取获得锁。

共享锁(Shared Locks),又称读锁。如果事务T1对数据对象O1加上了共享锁,那么当前事务只能对O1进行读取操作,其他事务也只能对这个数据对象加共享锁,直到该数据对象上的所有共享锁都释放。

定义锁:

/shared_lock/[hostname]-请求类型W/R-序号

实现方式: 1、客户端调用 create 方法创建类似定义锁方式的临时顺序节点。

2、客户端调用 getChildren 接口来获取所有已创建的子节点列表。

3、判断是否获得锁,对于读请求如果所有比自己小的子节点都是读请求或者没有比自己序号小的子节点,表明已经成功获取共享锁,同时开始执行度逻辑。对于写请求,如果自己不是序号最小的子节点,那么就进入等待。

4、如果没有获取到共享锁,读请求向比自己序号小的最后一个写请求节点注册 watcher 监听,写请求向比自己序号小的最后一个节点注册watcher 监听。

实际开发过程中,可以 curator 工具包封装的API帮助我们实现分布式锁。

org.apache.curatorcurator-recipesx.x.x

curator 的几种锁方案 :

下面例子模拟 50 个线程使用重入排它锁 InterProcessMutex 同时争抢锁:

publicclassInterprocessLock{publicstaticvoidmain(String[]args){CuratorFrameworkzkClient=getZkClient();StringlockPath=;InterProcessMutexlock=newInterProcessMutex(zkClient,lockPath);//模拟50个线程抢锁(inti=0;i(){try{lock.acquire();System.out.println(+threadFlag+);//等到1秒后释放锁Thread.sleep(1000);}catch(Exceptione){e.printStackTrace();}finally{try{lock.release();}catch(Exceptione){e.printStackTrace();}}}}privatestaticCuratorFramework(){StringzkServerAddress=;ExponentialBackoffRetryretryPolicy=newExponentialBackoffRetry(1000,3,5000);CuratorFrameworkzkClient=CuratorFrameworkFactory.builder().connectString(zkServerAddress).sessionTimeoutMs(5000).connectionTimeoutMs(5000).retryPolicy(retryPolicy).build();zkClient.start();zkClient;}}

控制台每间隔一秒钟输出一条记录:


大数据学习一般要多少学费

4-6个月左右,包含java和大数据的学-习,如下:基础阶段:linux、docker、KVM、mySQL基础、oracle基础、mongodb、redis。 hadoop mapreduce hdfs yarn:hadoop:hadoop 概念、版本、历史,hdfs工作原理,yarn介绍及组件介绍。 大数据存储阶段:hbase、hive、sqoop。 大数据架构设计阶段:flume分布式、zookeeper、kafka。 大数据实时计算阶段:mahout、spark、storm。 大数据数据采集阶段:python、scala。 大数据商业实战阶段:实操企业大数据处理业务场景,分析需求、解决方案实施,综合技术实战应用。 大数据分析的几个方面:1、可视化分析:可视化分析能够直观的呈现大数据特点,同时能够非常容易被读者所接受,就如同看图说话一样简单明了。 2、数据挖掘算法:大数据分析的理论核心就是数据挖掘算法。 3、预测性分析:从大数据中挖掘出特点,通过科学的建立模型,从而预测未来的数据。 4、语义引擎:需要设计到有足够的人工智能以足以从数据中主动地提取信息。 5、数据质量和数据管理:能够保证分析结果的真实性

网游《倚天屠龙记》的AX系统是什么?

完美时空的《倚天屠龙记》首创了“AX”系统,可提高数据库的并发访问速度,均衡服务器负载动态调整,使程序对指令的反应更迅速;同时修改游戏的分布式设计,使数据库形成动态交互模式。 “AX”以记录锁替代传统编程,在提高速度的同时兼顾DatabaseTransaction,令用户数据信息更为安全地在多进程之间进行传递,真正实现服务器无障碍沟通,为用户带来能够媲美现实交流的游戏感受。

完美世家为你解答,希望您满意!

大数据专业主要学什么啊?

大数据需要学的:1、Java编程技术;2、Linux命令;3、Hadoop;4、Hive;5、Avro与Protobuf;6、ZooKeeper;7、HBase;8、phoenix等。

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐