分布式锁系列之zookeeper分布式锁和mysql分布式锁

目录

介绍

下载安装

 基本指令​编辑

java集成zookeeper

官方提供版

永久节点

 临时节点​编辑

 永久序列化节点

判断当前节点是否存在

 获取当前节点中的数据内容

 获取当前节点的子节点

更新节点内容

删除节点 

 zookeeper实现分布式锁

Mysql实现分布式锁

总结


介绍

ZooKeeper是一个开源的分布式协调服务,它提供了一套强大的原语和工具,用于构建分布式系统中的协调和同步机制。其中之一就是分布式锁。

分布式锁是一种用于在分布式系统中实现资源互斥访问的机制。在多个节点同时访问共享资源时,分布式锁可以确保只有一个节点能够获取到锁,从而避免数据竞争和冲突。

ZooKeeper分布式锁的实现主要依赖于ZooKeeper的有序节点和临时节点特性。下面是分布式锁的基本实现步骤:

  1. 创建一个持久的ZooKeeper节点作为分布式锁的根节点,例如/locks

  2. 当一个节点需要获取锁时,它会在/locks节点下创建一个有序的临时节点,例如/locks/lock-000000001

  3. 节点获取到锁的条件是它创建的节点是当前所有节点中最小的节点。

  4. 节点检查自己创建的节点是否是当前所有节点中最小的节点,如果是,则表示节点获取到了锁,可以继续执行业务逻辑;如果不是,则节点需要监听前一个节点的删除事件。

  5. 当前一个节点释放锁时,它会删除自己创建的节点。

  6. 其他节点监听到前一个节点的删除事件后,重复步骤4,直到获取到锁。

通过这样的方式,ZooKeeper分布式锁可以保证只有一个节点能够获取到锁,其他节点需要等待。当获取到锁的节点完成业务逻辑后,会释放锁,让其他节点有机会获取到锁。

需要注意的是,ZooKeeper分布式锁的实现需要考虑异常情况和竞态条件,例如节点宕机、网络分区等,以保证锁的可靠性和正确性。

ZooKeeper分布式锁是通过有序节点和临时节点特性实现的,它可以在分布式系统中实现资源的互斥访问,确保只有一个节点能够获取到锁。这种机制可以帮助开发者解决分布式系统中的并发访问问题。

下载安装

在官网进行下载安装包

Apache ZooKeeper

这里以长期稳定版编译版为例测试

连接服务器,创建zookeeper文件夹,然后将下载好的tar包上传至服务器

上传

 解压包

 tar -zxvf apache-zookeeper-3.8.2.tar.gz

查看解压后包

进入配置文件夹

 但是zookeeper启动时加载的是zoo.cfg配置文件,并不是该模板配置文件,所以在该模板配置文件基础上需要另外创建并书写一个zoo.cfg配置文件

cp zoo_sample.cfg zoo.cfg

来到zp目录下先创建一个数据目录,等下要书写在zoo.cfg配置文件中

,注意数据目录是和conf文件夹等同级 

 

复制data目录路径

编辑配置zoo.cfg文件

其他使用默认即可

 切换脚本目录启动zookeeper  注意 启动zookeeper需要jdk环境,需提前在服务器中配置好jdk环境

 ./zkServer.sh start   启动

 ./zkServer.sh stop  停止

 ./zkServer.sh restart 重启

 ./zkServer.sh status  查看状态

 基本指令

 

java集成zookeeper

官方提供版

引入所需依赖

        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.7.0</version>
        </dependency>

永久节点

 

 

 临时节点

 由于临时节点在链接关闭后就自动清除掉,所以这里演示时加断点进行演示

 查看节点列表  临时节点test2存在

 放开断点

 

 永久序列化节点

 

永久临时序列化节点不再演示 

判断当前节点是否存在

先看下当前列表的节点有哪些

 

 获取当前节点中的数据内容

先设置node节点内容值

 

 获取当前节点的子节点

更新节点内容

 

删除节点 

先查看下node节点下有哪些节点

 

 zookeeper实现分布式锁

引入curator依赖 主要代码中使用的代码和场景继承自本博主上一篇redis分布式锁的场景,所以不再从头梳理

  <dependency><groupId>org.apache.curator</groupId><artifactId>curator-framework</artifactId><version>4.3.0</version><exclusions><exclusion><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.apache.curator</groupId><artifactId>curator-recipes</artifactId><version>4.3.0</version><exclusions><exclusion><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId></exclusion></exclusions></dependency>

书写配置类

服务层:

重置库存后重启服务压测

 压测日志:

 可以看到在高并发场景下性能上并不是太好

查看库存:

符合预期库存为0没有超卖

Mysql实现分布式锁

实现思路:基于唯一键索引实现

新建一个lock表

 

代码实现

服务层

修改库存1000开始压测

 

 压测日志

性能感人o(╥﹏╥)o

库存结果

 

达到预期0 但是性能确实有些感人 

总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1549511.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

恒运资本:抄底单是什么意思?

抄底单是指出资者在股票或其他金融产品跌幅较大时&#xff0c;以较低价格买入的清单。其目的是在商场低迷、经济不景气时通过较低买入价格获取更多的财物&#xff0c;等待商场反弹时出售&#xff0c;然后取得高额收益。一般来说&#xff0c;需求具有必定的专业常识和危险意识的…

常用获取威胁情报数据+信息溯源的平台

获取威胁情报数据 奇安信威胁分析平台深信服威胁情报中心360安全大脑腾讯哈勃分析系统绿盟威胁情报中心安全星图平台安天威胁情报中心VenusEye威胁情报中心VirustotalIBM X-Force威胁情报ThreatBookAlienVaultVirusScan多引擎在线扫描RiskIQThreatMiner 需要注意的是&#xff0…

java显示艺术字_Java 在Word文档中添加艺术字的示例

与普通文字相比&#xff0c;艺术字更加美观有趣也更具有辨识度&#xff0c;常见于一些设计精美的杂志或宣传海报中。我们在日常工作中编辑Word文档时&#xff0c;也可以通过添加艺术字体来凸显文章的重点,美化页面排版。这篇文章将介绍如何使用Free Spire.Doc for Java在word文…

多线程——学习记录2

目录 单例模式两种单例写法饿汉式和懒汉式的区别 RuntimeTimer 计时器两个线程间的通信关键点&#xff1a;wait()线程等待 和 notify()随机唤醒等待的线程; 三个或三个以上间的线程通信关键点&#xff1a;notifyAll()唤醒所有线程 线程间通信需要注意的问题JDK1.5的新特性互斥锁…

2021真无线耳机推荐,必须了解的真无线蓝牙耳机

2021真无线耳机推荐&#xff0c;必须了解的真无线蓝牙耳机 真无线蓝牙耳机&#xff0c;从2019年TWS技术逐步完善后&#xff0c;如雨后春笋般冒出来&#xff0c;不黑不吹的说&#xff0c;各有千秋。那么在2021哪些真无线耳机是必须了解的呢&#xff0c;下面给打大家推荐四四款不…

真无线耳机资料整理

产品篇&#xff1a; 芯片篇&#xff1a; 降噪篇&#xff1a; 降噪对于耳机的作用很重要&#xff1a; 一方面是减少噪音&#xff0c;避免过度放大音量&#xff0c;从而减少对耳朵的损害&#xff1b; 二是过滤噪音从而提高音质和通话质量。 一般来说&#xff0c;降噪分为被动…

拼多多无线服务器吃撑,拼多多无线耳机恶搞段子又来了 造谣小哥道歉

段子手的想象力有多强&#xff1f;单单拼多多无线耳机一个品类&#xff0c;就凭本事活下来了。 拼多多上市后&#xff0c;一款“拼多多无线耳机”的恶搞图在各大社交平台刷屏&#xff0c;成为早期黑段子的典型之作。随后&#xff0c;拼多多官方辟谣&#xff0c;此图最早于2012年…

国产真无线蓝牙耳机哪个好?性价比高的国产无线耳机推荐!

说到真无线蓝牙耳机&#xff0c;大家第一个想到的肯定是AirPods。AirPods可以说开启了真无线蓝牙耳机的时代。许多商家也逐步推出蓝牙耳机&#xff0c;如今已经有多款真无线蓝牙耳机可供消费者选择&#xff0c;那么在这里给大伙推荐几款在音质方面表现非常优秀的国产真无线蓝牙…

无线耳机哪个品牌好?真无线耳机音质排行

前几天刷社交平台我看到了一条推荐学生党开学装备的视频&#xff0c;优盘、蓝牙耳机这些常见的数码产品就在其中。说实话&#xff0c;这几样产品确实非常实用&#xff0c;很多场合都能发挥重要作用!什么?你还没有蓝牙耳机?那么我给大家推荐几款音质不错的真无线耳机&#xff…

什么无线耳机音质最好?音质非常好的几款蓝牙耳机推荐

现在的人无论去哪里,几乎都是手机不离手,不管走到哪,你都可以看到有人拿着手机在玩,但这时候就面临一个问题,可能在你刷视频、打电话的时候,外放的声音就很尴尬,这时候蓝牙耳机可就起了大作用。不仅使用方便,而且不管在什么样的场合,都可以使用,作为蓝牙耳机的爱好者…

有什么适合学生党使用的无线蓝牙耳机?四款学生党无线耳机

无线蓝牙耳机是真正的解决了耳机线的问题&#xff0c;使用起来比那些有线的蓝牙耳机更加方便&#xff0c;而且自AirPods发布之后&#xff0c;无线耳机在短短两年内就成为人尽皆知的耳机品类。普遍的无线耳机都会配有一个充电盒子&#xff0c;续航问题基本不用担心&#xff0c;放…

高性价比真无线耳机哪款好?2022性价比蓝牙耳机推荐

性价比高的蓝牙耳机有哪些&#xff1f;高性价比高的东西最终总能让人产生购买欲望。这几款高性价比蓝耳机都是性价比蓝牙耳机排行榜的前几名。想购买高性价比蓝牙耳机&#xff0c;可以从以下性价比高排行榜中挑选。 1.南卡小音舱蓝牙耳机 参考价格&#xff1a;199元 蓝牙版本…

无线耳机那种佩戴方式舒服?戴着舒服不掉的无线耳机

当今&#xff0c;随着无线技术的发展&#xff0c;蓝牙耳机风行于各个大街小巷&#xff0c;有不少蓝牙耳机的忠实粉丝。当然&#xff0c;如果一款耳机没有一个优秀的音质&#xff0c;那么这款耳机就没有任何意义。目前&#xff0c;很多蓝牙耳机的质量非常好&#xff0c;下面就给…

运动耳机和无线耳机哪个好?运动无线耳机推荐

其实运动本身是一件挺枯燥的事情,尤其是一个人在健身房或在无人的小路上慢跑,而听音乐是大多数人缓解枯燥的首选,不过在运动的过程中拥有一款既要音质好、又要适合运动佩戴防水防汗的耳机可就不那么容易了。今天给大家推荐了6款最佳运动耳机,让想要一边健身一边欣赏音乐的消…

2020新款高颜值真无线蓝牙耳机推荐,双11不妨考虑这几款高性价比蓝牙耳机

如今无线蓝牙耳机已经成为各路潮人、健身达人、数码发烧友的标配&#xff0c;没有束缚的音频体验是有线耳机无法提供的。市场上众多蓝牙耳机品牌中&#xff0c;品质层次不齐&#xff0c;对于新手想要选购到适合自己的蓝牙耳机确实有些难。今天这个榜单&#xff0c;小编特意结合…

Python作业day2购物车

流程图&#xff1a; 实现情况&#xff1a; 可自主注册&#xff0c; 登陆系统可购物&#xff0c;充值&#xff08;暂未实现&#xff09;&#xff0c;查询余额。 撸了两天一夜的代码&#xff0c;不多说&#xff0c;直接上码&#xff0c;注释神马的后面再说 1 #!/usr/bin/env pyth…

微软官方windows phone开发视频教程第一天视频(附下载地址)

//你可以直接跳过下面啰啰嗦嗦的废话。 /* 作为一名程序员&#xff0c;我时常担忧到底该往哪方便发展。 C#&#xff1f;C&#xff1f;Java&#xff1f;Object C&#xff1f;... 搞网页&#xff1f;搞客户端&#xff1f;搞服务器&#xff1f;搞算法&#xff1f;... PC&#xff1…

Java基础之IO流File类创建及删除

1.File类概述及构造方法 2.File类创建功能 文件创建成功&#xff01; 如果文件不存在&#xff0c;就创建文件&#xff0c;并返回true 如果文件存在&#xff0c;就不创建文件&#xff0c;并返回false 如果文件夹不存在&#xff0c;就创建文件夹&#xff0c;并返回true 如果文件…

学会Mybatis框架:让你的代码更具灵活性、可维护性、安全性和高效性【二.动态SQL】

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于Mybatis的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.Mybatis动态SQL如何应用 1.需求 2.…

【PHP】文件包含-includerequire

文章目录 文件包含意义&#xff1a;四种形式文件加载原理include和require的区别文件的加载路径文件嵌套包含 文件包含 文件包含&#xff1a;在一个PHP脚本中&#xff0c;去将另外一个文件&#xff08;PHP&#xff09;包含进来&#xff0c;去合作完成一件事情。 意义&#xf…