
Zookeeper
文章平均质量分 77
云川之下
这个作者很懒,什么都没留下…
展开
-
【zookeeper】Zookeeper集群角色介绍
Zookeeper集群角色介绍Zookeeper中最典型集群模式: Master/Slave 模式(主备模式)。在这种模式里,通常以Master服务器作为主服务器提供写服务,其他的Slave服务器作为从服务器通过异步复制的方式获取Master服务器的最新数据提供读服务。但是,在 Zookeeper中没有选择传统的 Master/Slave 概念,而是引入了Leader、Follower 和Observer三种角色。它们之间的关系如下图所示:Zookeeper集群中的所有机器通过一个Leader选转载 2021-07-26 11:18:45 · 790 阅读 · 0 评论 -
【Zookeeper】 典型应用场景 01 分布式锁(InterProcessMutex、InterProcessReadWriteLock)
文章目录1 非公平锁2 公平锁2.1 共享锁1 非公平锁如上实现方式在并发问题比较严重的情况下,性能会下降的比较厉害,主要原因是,所有的连接都在对同一个节点进行监听,当服务器检测到删除事件时,要通知所有的连接,所有的连接同时收到事件,再次并发竞争,这就是羊群效应。这种加锁方式是非公平锁的具体实现:如何避免呢,我们看下面这种方式。2 公平锁InterProcessMutex就是公平锁的实现。参见Apache curator5.0原理分析 《分布式锁InterProcessMutex使用及原理分原创 2021-06-22 16:30:33 · 482 阅读 · 0 评论 -
【zookeeper】Apache curator实战 03 《三种监听器》
文章目录1. 基于watch实现监听2. Listener3. 基于cache实现监听3.1 node cache:3.2 path cache:3.3 tree cache:参考1. 基于watch实现监听利用Watcher来对节点进行监听操作,但此监听操作只能监听一次,与原生API并无太大差异。如有典型业务场景需要使用可考虑,但一般情况不推荐使用。下面是具体的使用demo:public class CuratorWatchEvent { public static CuratorFram原创 2021-06-21 15:12:42 · 642 阅读 · 2 评论 -
【ZooKeeper】源码分析之内存结构
文章目录1. 概述2. ZKDatabase的结构2.1 探究dataTree2.2 DataNode1. 概述对于使用者来讲,zookeeper就像一个内存数据库,但是zookeeper的这个内存数据库真的是个数据库吗?还是就是存于内存中的一个对象呢?根据ZooKeeper启动脚本./zkServer.sh start -server ip:port,打开脚本可以看到服务端启动入口:org.apache.zookeeper.server.quorum.QuorumPeerMain。注意:服务端的原创 2021-06-18 10:44:25 · 290 阅读 · 1 评论 -
【zookeeper】Apache curator原理分析《curator的start()是如何保证连接成功之前是阻塞的》
aa原创 2020-11-28 16:32:22 · 349 阅读 · 0 评论 -
【zookeeper】Apache curator5.0原理分析《跟着实例学习ZooKeeper的用法: 多种分布式锁》
参考:《跟着实例学习ZooKeeper的用法: 多种分布式锁》转载 2020-11-27 16:34:53 · 226 阅读 · 0 评论 -
【zookeeper】Apache curator5.0原理分析 《连接处理》
参考:《Curator源码解析(四)ZooKeeper存在的连接问题》转载 2020-11-26 19:49:01 · 815 阅读 · 0 评论 -
【zookeeper】zookeeper高阶知识 《zookeeper怎么保证节点唯一性》
zookeeper用来做分布式锁,主要原理是同一路径下的节点名称不能重复,zookeeper是怎么保证节点唯一性的呢?大致看了源码,发现创建节点的方法,是用synchronized修饰的。com.apache.zookeeper.server.DataTree这个类是zk节点的结构体,里面有createNode方法用来创建节点: public void createNode(final String path, byte data[], List<ACL> acl,转载 2020-11-25 23:13:49 · 478 阅读 · 0 评论 -
【zookeeper】zookeeper基础知识 《zookeeper集群中的三种角色Leader、Follower和observer》
概述像Mysql的主从模式会分master主节点和slave从节点一样,在zookeeper集群中,节点也有不同的角色,承担着不同角色。zookeeper有三种角色:老大Leader(领导者) 2、老二Follower (跟随者) 3、老三Observer(观察者)。其中,Follower和Observer归类为Learner(学习者)按重要性排序是Leader > Follower > Observer老大领导者LeaderLeader在集群中只有一个节点,可以说是老大No.1,转载 2020-11-25 22:24:15 · 2269 阅读 · 0 评论 -
【zookeeper】原生Java客户端API入门 03《守护线程》
参考:《Zookeeper客户端线程的属性——守护线程》《setDaemon详解》原创 2020-11-24 20:06:17 · 120 阅读 · 0 评论 -
【zookeeper】Apache curator优点介绍
参考:《curator笔记-分布式锁的实现与原理》《zookeeper curator之我见》转载 2020-11-24 14:49:35 · 714 阅读 · 0 评论 -
【zookeeper】原生Java客户端API入门 04《版本号version参数》
更新节点数据的方法:同步方法:Stat setData(final String path, byte data[], int version)异步方法:void setData(final String path, byte data[], int version, StatCallback cb, Object ctx)参数说明:path:指定数据节点路径data[]:一个字节数组,即需要使用该数据来覆盖节点现在的数据内容version:指定节点的数据版本cb:注册一个异步回调函数转载 2020-11-23 20:16:38 · 577 阅读 · 0 评论 -
【zookeeper】原生Java客户端API入门 05《判断节点是否存在和exists()使用》
文章目录exists()作用举例exists()作用客户端可以通过ZooKeeper的API来检测节点是否存在,有如下4个接口:public Stat exists(final String path, Watcher watcher)public Stat exists(String path, boolean watch)public void exists(final String path, Watcher watcher, StatCallback cb, Object ctx)pub原创 2020-11-23 17:28:33 · 909 阅读 · 0 评论 -
【zookeeper】原生Java客户端API入门 06《验证watch只生效一次》
请先看:《【zookeeper】客户端代码入门-创建节点和查询节点数据》本篇基于前文改造,现在,我们在查询节点数据时,带watcher,并且修改2次数据,测试结果显示,只打印一次日志,没有打印2次,说明只发生一次watcher事件import lombok.extern.slf4j.Slf4j;import org.apache.zookeeper.*;import org.apache.zookeeper.data.Stat;import org.junit.Before;import org原创 2020-11-23 11:11:38 · 204 阅读 · 0 评论 -
【zookeeper】zookeeper基础知识 《ACL》
文章目录1. 概述1.1 scheme1.2 id1.3 permission2. 命令3. 测试3.1 Digest3.1.1 代码生成ID3.1.2 xshell生成ID3.1.3 总结3.3 Auth 明文授权3.3 IP3.4 worldAccess Control在分布式系统中重要性是毋庸置疑的,今天这篇文章来介绍一下Zookeeper中的Access Control(ACL)。1. 概述传统的文件系统中,ACL分为两个维度,一个是属组,一个是权限,子目录/文件默认继承父目录的ACL。而在原创 2020-11-24 20:00:32 · 645 阅读 · 0 评论 -
【zookeeper】zookeeper创建节点时报Path must start with / character
结论一般情况下,都是节点的名称没有以/开头,但是有时即使以/开头,仍然报错,原因是其他参数有问题,比如全角字符过程复现我们尝试创建一个容器节点,结果报错:[zk: localhost:2181(CONNECTED) 34] create ‐c /containerPath must start with / character经过定位,发现‐c有问题,横线编码错误,删除,重新改为正确的符号即可。...原创 2020-11-17 10:30:21 · 2995 阅读 · 0 评论 -
【zookeeper】zookeeper基础知识 《安装配置 & 启动脚本zkServer.sh 》
JDK安装 ZooKeeper 之前需要先安装 JDK, 关于 JDK 的安装这里不再赘述。本文以zookeeper-3.5.8,需依赖JDK1.8,关于 JDK 的安装这里不再赘述。下载版本ZooKeeper官方网站https://zookeeper.apache.org/上次至linux,并解压上传至/usr/zk[root@EMS3 zk]# lsapache-zookeeper-3.5.8-bin.tar.gz[root@EMS3 zk]# tar -zxvf apache-zook原创 2020-11-16 19:16:49 · 988 阅读 · 3 评论 -
【zookeeper】zookeeper 异常:stat is not executed because it is not in the whitelist
1 .问题启动 zookeeper 后 用指令 telnet 127.0.0.1 2181 连接 提示输入指令 :stat 后报错,然后关闭连接:[root@EMS3 xinetd.d]# telnet 127.0.0.1 2181Trying 127.0.0.1...Connected to 127.0.0.1.Escape character is '^]'.stat'stat is not executed because it is not in the whitelist.'C转载 2020-11-16 18:59:48 · 2132 阅读 · 0 评论