![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
zookeeper
文章平均质量分 88
这瓜保熟么
平常心
展开
-
简单理解Zookeeper的Leader选举
Leader选举是保证分布式数据一致性的关键所在。Leader选举分为Zookeeper集群初始化启动时选举和Zookeeper集群运行期间Leader重新选举两种情况。在讲解Leader选举前先了解一下Zookeeper节点4种可能状态和事务ID概念。1、Zookeeper节点状态LOOKING:寻找Leader状态,处于该状态需要进入选举流程 LEADING:领导者状态,处于该状态的节点说明是角色已经是Leader FOLLOWING:跟随者状态,表示Leader已经选举出来,当前节点角色是转载 2021-08-18 11:28:51 · 338 阅读 · 0 评论 -
Zookeeper并不保证读取的是最新数据
如果是对zk进行读取操作,读取到的数据可能是过期的旧数据,不是最新的数据。已上图为例,如果一个zk集群有10000台节点,当进行写入的时候,如果已经有6K个节点写入成功,zk就认为本次写请求成功。但是这时候如果一个客户端读取的刚好是另外4K个节点的数据,那么读取到的就是旧的过期数据。在zk的官方文档中对此有解释,地址在:https://zookeeper.apache.org/doc/r3.1.2/zookeeperProgrammers.htmlzookeeper一致性的保证:Z.转载 2021-01-17 18:25:42 · 1520 阅读 · 2 评论 -
zookeeper客户端 zkCli使用及常用命令
进入到zookeeper的bin目录 ,连接服 执行命令:zkCli.sh -server 127.0.0.1:2181查看根目录节点: ls /查看根节点数据和详情:get /转载 2020-09-14 20:07:54 · 540 阅读 · 0 评论 -
zookeeper源码倒入Idea
背景ZooKeeper是一个使用Java语言编写,基于Ant进行构建的开源软件,所以搭建ZK源码环境前,需要准备好JDK和Ant环境。步骤1:安装ant2:zookeeper源码下载release分支下载3.5.8版本,低版本低zookeeper源码中ivysettings.xml中,用到的仓库是http链接的、仓库地址repo2都有问题,需要做特殊处理,所以选择此版本git clone --branch release-3.5.8 https://github.com/apach原创 2020-09-02 10:50:32 · 214 阅读 · 0 评论 -
ZooKeeper节点的操作以及配额设置
1:查询操作ls / # 查看指定路径下的节点stat PATH # 查看指定节点的状态信息get PATH # 获取指定节点的数据,它会包括状态信息ls2 PATH # 列出子节点同时输出当前节点的状态信息2:创建节点create [-s] [-e] PATH DATA acl # 路径和数据,数据可以为空 -s是顺序节点(会自动在名称后面加序列号) -e是临时节点,不加则是永久节点我这里在原有/zktest节点下建立了test1子节点...转载 2020-08-25 14:31:02 · 1150 阅读 · 0 评论 -
简单易懂的字典树
1. 什么是字典树?字典树(Trie树、前缀树)是一种用于快速检索的多叉树结构。字典树把字符串看成字符序列,根据字符串中字符序列的先后顺序构造从上到下的树结构,树结构中的每一条边都对应着一个字符。字典树上存储的字符串被视为从根节点到某个节点之间的一条路径,并在终点节点上做个标记"该节点对应词语的结尾",正因为有终点节点的存在,字典树不仅可以实现简单的存储字符串,还可以实现字符串的映射,只需要将相对应的值悬挂在终点节点上即可,比如"自然"="nature"的映射,只需要将"自然"路径上终点节点的值设置为"转载 2020-08-25 13:37:21 · 171 阅读 · 0 评论 -
Zookeeper用到的字典树(Trie树)
一:什么是Trie树 Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。 Trie的核心思想是空间换时间。利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。它有3个基本性质: 1. 根节点不包含字符,除根节点外每一个节点都只包含一个字符。 2. 从根节点到某一节点,路径上经过的字符连接转载 2020-08-24 23:50:34 · 321 阅读 · 0 评论 -
Zookeeper用到的Jute通信协议
序列化:概述:对于一个网络通信,首先需要解决的就是对数据的序列化和反序列化处理,在ZooKeeper中,使用了Jute这一序列化组件来进行数据的序列化和反序列化操作。同时,为了实现一个高效的网络通信程序,良好的通信协议设计也是至关重要的。Zookeeper团队曾想过将Jute替换成Apache的Avro或是Google的protobuf但是考虑到新老版本序列化组件的兼容性和当前Jute的序列化能力并不是ZooKeeper的性能瓶颈。使用Jute进行序列化:package com.tianlh转载 2020-08-24 23:00:23 · 585 阅读 · 0 评论 -
Zookeeper选举-FastLeaderElection (最新默认)
一. 服务器启动时期的Leader选举1:处理投票规则投票信息:1.logicalclock(electionEpoch):本地选举周期,每次投票都会自增2.epoch(peerEpoch):选举周期,每次选举最终确定完leader结束选举流程时会自增(真正zxid的前32位)3.zxid:数据ID,每次数据变动...转载 2020-04-24 13:54:57 · 196 阅读 · 0 评论 -
ZAB
ZAB 协议全称:Zookeeper Atomic Broadcast(Zookeeper 原子广播协议)。 Zookeeper 是一个为分布式应用提供高效且可靠的分布式协调服务。在解决分布式一致性方面,Zookeeper 并没有使用 Paxos ,而是采用了 ZAB 协议。 ZAB 协议定义:ZAB 协议是为分布式协调服务 Zookeeper 专门设计的一种支持 崩溃恢复...原创 2019-02-21 01:16:27 · 2440 阅读 · 1 评论 -
zookeeper中的ZAB协议
ZAB协议用途ZAB(Zookeeper Atomic Broadcast) 协议是为分布式协调服务zookeeper专门设计的一种支持崩溃恢复的原子广播协议。在zookeeper中,主要依赖ZAB协议来实现分布式数据一致性,基于该协议,zookeeper实现了一种主备模式的系统架构来保持集群中各个副本之间的数据一致性。ZAB协议介绍ZAB协议包含两种基本模式,分别是: 1》崩溃恢复之数...转载 2019-02-15 23:35:04 · 112 阅读 · 0 评论 -
zookeeper中的ZAB协议理解
ZAB协议ZAB协议是专门为zookeeper实现分布式协调功能而设计。zookeeper主要是根据ZAB协议是实现分布式系统数据一致性。zookeeper根据ZAB协议建立了主备模型完成zookeeper集群中数据的同步。这里所说的主备系统架构模型是指,在zookeeper集群中,只有一台leader负责处理外部客户端的事物请求(或写操作),然后leader服务器将客户端的写操作数据同步到所...转载 2019-01-30 10:45:52 · 182 阅读 · 0 评论 -
Windosws的zookeeper的伪集群搭建
1:下载zookeeper-3.4.12减压2:copy E:\ZK\zookeeper-3.4.12\conf目录下的zoo_sample.cfg 另存为:zoo1.cfg zoo2.cfg zoo3.cfg修改zoo1.cf文件内容为:dataDir=E:\\ZK\\data1dataLogDir=E:\\ZK\\log1clientPort=2181server.1=12...原创 2018-12-09 13:40:39 · 339 阅读 · 0 评论 -
ReentrantLock和Curator的Zookeeper分布式锁的对比
实现成员变量 基于线程安全的依次递减功能:ReentrantLock:package zklock;import java.util.concurrent.CountDownLatch;import java.util.concurrent.locks.ReentrantLock;public class Lock1 { static ReentrantLock ree...翻译 2018-12-09 13:46:06 · 324 阅读 · 0 评论 -
Curator分布式锁的使用分析
Shared Reentrant Lock在《Leader Election 的使用与分析》介绍过,Leader Election选主,是使用了一个InterProcessMutex分布式锁来实现的。而InterProcessMutex就是这里要介绍的Shared Reentrant Lock:可重入共享分布式锁。用于全局同步的完整分布式锁,意味着在同一个时间点,对于同一把锁,不会有...转载 2018-12-11 15:21:53 · 1849 阅读 · 0 评论 -
10分钟看懂!基于Zookeeper的分布式锁
实现分布式锁目前有三种流行方案,分别为基于数据库、Redis、Zookeeper的方案,其中前两种方案网络上有很多资料可以参考,本文不做展开。我们来看下使用Zookeeper如何实现分布式锁。什么是Zookeeper?Zookeeper(业界简称zk)是一种提供配置管理、分布式协同以及命名的中心化服务,这些提供的功能都是分布式系统中非常底层且必不可少的基本功能,但是如果自己实现这些功能而且...转载 2019-02-01 15:56:34 · 140 阅读 · 0 评论 -
Zookeeper选主流程
选主机制Zookeeper的核心是原子广播,这个机制保证了各个Server之间的同步。实现这个机制的协议叫做Zab协议。Zab协议有两种模式,它们分别是恢复模式(选主)和广播模式(同步)。当服务启动或者在领导者崩溃后,Zab就进入了恢复模式,当领导者被选举出来,且大多数Server完成了和leader的状态同步以后,恢复模式就结束了。状态同步保证了leader和Server具有相同的系统状态。l...翻译 2019-01-28 17:58:04 · 237 阅读 · 0 评论 -
Zookeeper集群节点数量为什么要是奇数个?
1、防止由脑裂造成的集群不可用。首先,什么是脑裂?集群的脑裂通常是发生在节点之间通信不可达的情况下,集群会分裂成不同的小集群,小集群各自选出自己的master节点,导致原有的集群出现多个master节点的情况,这就是脑裂。下面举例说一下为什么采用奇数台节点,就可以防止由于脑裂造成的服务不可用:(1) 假如zookeeper集群有 5 个节点,发生了脑裂,脑裂成了A、B两个小集群: ...翻译 2019-01-28 18:05:50 · 850 阅读 · 0 评论 -
zookeeper的选主过程
目前默认的版本是FastLeaderElection,另两种已经被标记为deprecated。其过程如下:数据恢复阶段。首先,每个ZooKeeper服务器先读取当前保存在磁盘的事务数据,从而得知当前自己能看到的最大zxid首次发送自己的投票值。在读取数据之后,每个ZooKeeper服务器发送自己提议的leader,这个协议中包含了以下几部分的数据:所选举leader的id,在初始阶段,每台...转载 2019-01-29 16:32:32 · 208 阅读 · 0 评论 -
zookeeper的2PC事务提交
关于 2PC 提交当一个事务需要跨多个分布式节点的时候,为了保持事务处理的 ACID 特性,就需要引入一个协调者(TM)来统一调度所有分布式节点的执行逻辑。 案例:有两个参与者和一个协调者,参与者1操作成功后,参与者2也必须操作成功。参与者1和参与者2属于两台不同的机器,现在需要跨节点提交事务,也就是分布式事务提交。参与者成功提交事务 过程: 1》协调者给每一个参与者发起一个事务提...转载 2019-01-29 17:43:38 · 399 阅读 · 0 评论 -
zookeeper的选主过程
Leader选举 Leader选举是保证分布式数据一致性的关键所在。当Zookeeper集群中的一台服务器出现以下两种情况之一时,需要进入Leader选举。服务器初始化启动。 服务器运行期间无法和Leader保持连接。 下面就两种情况进行分析讲解。1. 服务器启动时期的Leader选举 在集群初始化阶段,当有一台服务器Server1启动时,该Server1处于Lookin...转载 2019-02-06 17:52:36 · 548 阅读 · 0 评论 -
10分钟看懂!基于Zookeeper的分布式锁
什么是Zookeeper?Zookeeper(业界简称zk)是一种提供配置管理、分布式协同以及命名的中心化服务,这些提供的功能都是分布式系统中非常底层且必不可少的基本功能,但是如果自己实现这些功能而且要达到高吞吐、低延迟同时还要保持一致性和可用性,实际上非常困难。因此zookeeper提供了这些功能,开发者在zookeeper之上构建自己的各种分布式系统。虽然zookeeper的实现比较复...转载 2018-12-08 17:50:09 · 172 阅读 · 0 评论