zookeeper
文章平均质量分 70
Dongguabai
这个作者很懒,什么都没留下…
展开
-
分布式集群数据同步之 ZooKeeper
上周组内周会大家讨论到了 MySQL 的主从同步。正好借着这个议题,开启一个新的系列,探讨一下分布式环境中集群数据同步的设计,如 Redis、ZooKeeper、RocketMQ、Eurake、MySQL 等。开源中间件都很复杂,抓大放小,所以仅分析这三点在各个中间件中的实现设计。本文探讨的是 ZooKeeper。先说明一个基本概念,ZK 并不是传统意义上的 Master/Slave 模式,而是引入了 Leader、Follower 和 Observer 三种角色概念。原创 2022-12-01 11:30:28 · 7652 阅读 · 0 评论 -
Zookeeper全解析——Paxos作为灵魂
原计划在介绍完ZK Client之后就着手ZK Server的介绍,但是发现ZK Server所包含的内容实在太多,并不是简简单单一篇Blog就能搞定的。于是决定从基础搞起比较好。那么ZK Server最基础的东西是什么呢?我想应该是Paxos了。所以本文会介绍Paxos以及它在ZK Server中对应的实现。先说Paxos,它是一个基于消息传递的一致性算法,Leslie Lamport在1990年提出,近几年被广泛应用于分布式计算中,Google的Chubby,Apache的Zookeeper都是基于转载 2021-05-26 07:43:41 · 95 阅读 · 0 评论 -
为什么不应该使用ZooKeeper做服务发现
目录背景请留意服务部署环境ZooKeeper作为发现服务的问题做出正确的选择:Eureka的成功结论【编者的话】本文作者通过ZooKeeper与Eureka作为Service发现服务(注:WebServices体系中的UDDI就是个发现服务)的优劣对比,分享了Knewton在云计算平台部署服务的经验。本文虽然略显偏激,但是看得出Knewton在云平台方面是非常有经验的,这篇文章从实践角度出发分别从云平台特点、CAP原理以及运维三个方面对比了ZooKeeper与Eureka两个系统作为转载 2021-05-17 22:56:06 · 169 阅读 · 0 评论 -
Eureka与Zookeeper服务注册中心比较
目录1. 前言2. Zookeeper保证CP3. Eureka保证AP4. 更深入的探讨4.1 为什么不应该使用ZooKeeper做服务发现4.2 背景4.3 请留意服务部署环境4.4 ZooKeeper作为发现服务的问题4.5 做出正确的选择:Eureka的成功4.6 结论1. 前言服务注册中心,给客户端提供可供调用的服务列表,客户端在进行远程服务调用时,根据服务列表然后选择服务提供方的服务地址进行服务调用。服务注册中心在分布式系统中大量应用,是分布式系统转载 2021-05-17 22:55:03 · 418 阅读 · 0 评论 -
深入理解 ZK 中的 “大多数” 机制
在 ZK 中我们最常提到的就是“大多数”,一搜一大堆:那么这个“大多数”到底是什么意思呢?理科生本不该纠结文字游戏,但是这个“大多数”是本文要探讨的关键。先抛出几个问题,让大伙知道我在纠结啥。问题以一篇博客中的描述为例:广播模式:leader写入数据时会发起提议,当大多数follower都同意之后,leader就会更新数据并广播给其他follower。https://www.cnblogs.com/wlwl/p/10715065.html我对这段描述的理解是,写数据需要大多数 Follo原创 2021-04-24 16:02:50 · 961 阅读 · 0 评论 -
开启 Zookeeper 四字命令(is not executed because it is not in the whitelist)
有时候我们需要使用四字命令查看 ZK 的一些信息,如果没有配置开启,救会出现这样的异常:➜ bin echo mntr | nc localhost 2181mntr is not executed because it is not in the whitelist.➜ bin telnet localhost 2181Trying ::1...Connected to localhost.Escape character is '^]'.echo mntr | nc localh原创 2021-04-24 11:18:12 · 923 阅读 · 0 评论 -
本地调试 ZooKeeper 源码
首先将源码 clone 下来:➜ gitee git clone https://github.com/apache/zookeeper.git导入到 IDEA 中:单机模式拷贝配置文件可以将 conf/zoo_sample.cfg 复制到自定义目录。这里直接拷贝到当前conf目录下,并命名为 zoo1.cfg:tickTime=2000initLimit=10syncLimit=5dataDir=/Users/dongguabai/Desktop/temp/zoo原创 2021-04-23 22:50:15 · 565 阅读 · 0 评论 -
ZooKeeper 为什么不提供一个永久性的Watcher注册机制
不支持用持久Watcher的原因很简单,如果Watcher的注册是持久的,那么必然导致服务端的每次数据更新都会通知到客户端——这在数据变更非常频繁的场景下,ZooKeeper无法保证性能。那么你或许还会问,“服务端的每次数据更新都会通知到客户端”,这不正式用户希望达到的效果么?没错!在平时的答疑过程中,很多同学也会问相同的问题。但我们仔细考虑这个问题,就可以发现,很多时候,我们需要的是最新数据,而不是每次变更!仔细想想看。: )...转载 2021-04-08 09:41:25 · 224 阅读 · 0 评论 -
简单使用 ZooKeeper 实现集群主备切换
昨天晚上看了一篇博客,作者实现了一个分布式的调度框架,其中支持两种集群模式,其中一种就是主备模式,是基于 ZooKeeper 实现的,这也是 ZooKeeper 很常见的应用场景,还没来得及看具体细节就去处理了一个线上问题,今天一直找不到那个博客链接。今天就尝试自己实现一下,本文会介绍两种实现方式(总体思想一致,部分细节有所差别)。这种主备模式首先需要从集群中选出 Master 节点,然后剩余节...原创 2020-05-05 22:25:19 · 4828 阅读 · 0 评论 -
关于Unable to read additional data from server sessionid 0x0问题的解决
今天搭建了一个zookeeper集群,分别为server1,server2,server3。# The number of milliseconds of each ticktickTime=2000# The number of ticks that the initial# synchronization phase can takeinitLimit=10# The...转载 2020-05-05 18:30:17 · 6225 阅读 · 0 评论 -
KeeperException$UnimplementedException: KeeperErrorCode = Unimplemented for /XX
今天出现的异常为:我的相关依赖为:ZooKeeper服务的版本为:解决方案一官网说明如下:那就降低Curator版本,不要使用4.x。参考资料:http://curator.apache.org/zk-compatibility.html解决方案二其实上面一种解决方案我自己尝试是没有成功的,但是晚上基本上都是这么描述的解决方案,这里做个记录。...原创 2018-10-20 18:03:44 · 1828 阅读 · 0 评论 -
查看当前ZooKeeper版本
原创 2018-10-20 17:38:15 · 12936 阅读 · 0 评论 -
基于ZooKeeper原生API实现分布式锁
其实实现分布式锁主要需要有一个第三方中间件能够提供锁的存储和锁的释放。像数据库、Redis、ZooKeeper都是常用的分布式锁解决方案。分析根据ZK节点的特性,在同一时间内,只会有一个客户端创建/Locks/lock节点成功,失败的节点则会监听/Locks/lock节点的变化:当/Locks/lock发生变化后,会触发事件的监听机制,随后ClientB和ClientA客户端会重新...原创 2018-10-30 14:01:50 · 1431 阅读 · 0 评论 -
基于Curator操作ZooKeeper(四)-自定义实现简易分布式锁
Java原生API操作ZooKeeper可参看:Java原生API操作Zookeeper(一)Java原生API操作Zookeeper(二)相关内容:基于Curator操作ZooKeeper(一)-基本操作基于Curator操作ZooKeeper(二)-Watcher操作-补充TreeCache基于Curator操作ZooKeeper(二)-Watcher操作基于Cur...原创 2018-10-22 11:09:53 · 305 阅读 · 0 评论 -
org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = NoNode for /aaaa/bb
其实这个异常很常见,简单说明下我出现这个异常的情况,我的代码简化如下:就是在ZK连接成功后,先随便判断了一个path存不存在,然后调用getChildren()方法。此时ZK节点情况为:运行结果:再将代码改一下:运行结果:再将代码改一下:运行结果:也就是说明调用getChildren()方法必须要当前path存在。...原创 2018-10-09 20:25:09 · 8660 阅读 · 0 评论 -
ZooKeeper中写操作全局投票
转自:https://blog.csdn.net/qq_34913075/article/details/79017471关于Paxos的具体描述可以在Wiki中找到:http://zh.wikipedia.org/zh-cn/Paxos算法。网上关于Paxos分析的文章也很多。这里希望用最简单的方式加以描述并建立起Paxos和ZK Server的对应关系。Paxos描述了这样一个场景,有一...转载 2018-10-09 13:21:16 · 251 阅读 · 0 评论 -
ZooKeeper常用命令
转自:https://blog.csdn.net/WuLex/article/details/76039026启动Windows环境双击zkServer.cmd脚本即可启动ZooKeeperLinux环境使用zkServer.sh脚本,如下:3 常用命令3.1. 启动ZK服务: bin/zkServer.sh start3.2. 查看ZK服务状态: b...转载 2018-09-30 11:18:23 · 316 阅读 · 0 评论 -
ZooKeeper数据模型
基本数据模型ZK数据模型是一个树形结构,有点像前端的tree.js组件,也类似Linux操作系统的文件系统,也是以树的形式来存储。严格来说是一颗多叉树,每个节点上都可以存储数据,每个节点还可以拥有N个子结点,最上层是根节点以“/”来代表。在谈到分布式的时候,我们通常说的“节点”是指组成集群的每一台机器,在ZK中,“节点”分为两类,第一类同样是指构成集群的机器;第二类是指数据模型中的...原创 2018-09-30 11:30:53 · 1033 阅读 · 0 评论 -
ZK的zoo.cfg文件和节点属性说明
zoo.cfg安装完ZooKeeper后在conf下有这样一个文件:一般会将其重命名为zoo.cfg,在zoo.cfg钟有这样几个比较重要的配置:tickTime=2000 用于计算的时间单元,默认单位是毫秒,整个Zookeeper中的时间都是以tickTime为基准的。比如session超时:N*tickTimeinitLimit=10用于集群,允许从节点连接并同...原创 2018-09-29 20:27:53 · 1085 阅读 · 0 评论 -
基于Curator操作ZooKeeper(三)-Curator整合Spring
Java原生API操作ZooKeeper可参看:Java原生API操作Zookeeper(一)Java原生API操作Zookeeper(二)相关内容:基于Curator操作ZooKeeper(一)-基本操作基于Curator操作ZooKeeper(二)-Watcher操作-补充TreeCache基于Curator操作ZooKeeper(二)-Watcher操作 Cu...原创 2018-10-18 15:43:55 · 1370 阅读 · 0 评论 -
ZooKeeper Watcher监听机制(数据变更的通知)(一)(应用)
第二部分可参看:https://blog.csdn.net/Dongguabai/article/details/82986476ZooKeeper提供了分布式数据的发布/订阅功能。一个典型的发布/订阅模型系统定义了一种一对多的订阅关系,能够让多个订阅者同时监听某一个主题对象,当这个主题对象自身状态变化时,会通知所有订阅者,使它们能够做出相应的处理。在Zoo Keeper中,引入了Watche...原创 2018-10-08 20:06:02 · 2084 阅读 · 1 评论 -
ZK binding to port 0.0.0.0/0.0.0.0:2181; It is probably not running.
启动ZK后:查看ZK状态:查看相关日志:一直卡在:是有ZK进程的:解决方法:有可能是ZK尚未启动完全。关闭防火墙,重启。如果没有效果,可以删除zoo.cfg配置文件定义的dataDir和dataLogDir路径下的文件。...原创 2018-10-03 22:37:06 · 8966 阅读 · 0 评论 -
ZooKeeper启动日志java.net.ConnectException: 拒绝连接 (Connection refused)
启动ZK集群出现了这样一个异常:肯定会有一种情况是防火墙未关闭。我这里的原因是因为集群其他节点未启动,等其他节点启动后就好了。原创 2018-10-04 23:27:23 · 4673 阅读 · 1 评论 -
基于Curator操作ZooKeeper(一)-基本操作
Java原生API操作ZooKeeper可参看:Java原生API操作Zookeeper(一)Java原生API操作Zookeeper(二)相关内容:基于Curator操作ZooKeeper(二)-Watcher操作基于Curator操作ZooKeeper(二)-Watcher操作-补充TreeCache基于Curator操作ZooKeeper(三)-Curator整合Sp...原创 2018-10-13 11:33:34 · 1301 阅读 · 0 评论 -
初识ZooKeepe和ZooKeepe集群角色组成说明
ZK的主要作用如下:协议地址的维护; 负载均衡机制; 服务动态上下线感知;为了维持ZK的高可用,一般会搭建集群。通常在分布式系统中,构成一个集群的每一台机器都有自己的角色,最典型的集群模式就是Master/Slave模式(主备模式)。在这种模式中,我们把能够处理所有写操作的机器称为Master机器,把所有通过异步复制方式获取最新数据,并提供读服务的机器称为Slave机器。...原创 2018-10-05 18:20:38 · 626 阅读 · 0 评论 -
ZooKeeper在分布式环境中的假死脑裂
原文地址:https://blog.csdn.net/u010185262/article/details/49910301Zookeeper简介在上班之前都不知道有这样一个东西,在开始说假死脑裂之前先说说Zookeeper吧。Zookeeperzookeeper是一个分布式应用程序的协调服务。它是一个为分布式应用提供一致性服务的软件,提供的性能包括:配置维护、名字服务、分布式同步、...转载 2018-10-06 09:55:30 · 608 阅读 · 0 评论 -
分布式一致性协议之2pc
在分布式系统中,每一个机器节点虽然都能够明确地知道自己在进行事务操作过程中的结果是成功或失败,但却无法直接获取到其他分布式节点的操作结果。因此,当一个事务操作需要跨越多个分布式节点的时候,为了保持事务处理的ACID特性,就需要引人一个称为“协调者(Coordinator)”的组件来统一调度所有分布式节点的执行逻辑,这些被调度的分布式节点则被称为“参与者”( Participant)。协调者负责调度...原创 2018-10-06 12:01:32 · 246 阅读 · 0 评论 -
ZooKeeper图形化查看工具zooinspctor的使用
下载地址:链接:https://pan.baidu.com/s/1D4Aew8rJb9pb10qZZm2jKw 提取码:g4yg解压zip文件,进入build;使用java -jar命令运行jar包:原创 2018-10-06 18:35:22 · 916 阅读 · 0 评论 -
Java原生API操作Zookeeper(一)
基于Curator操作ZooKeeper可参看:基于Curator操作ZooKeeper(一)-基本操作基于Curator操作ZooKeeper(二)-Watcher操作基于Curator操作ZooKeeper(二)-Watcher操作-补充TreeCache相关内容:Java原生API操作Zookeeper(二)引入依赖: <dep...原创 2018-10-06 23:46:56 · 826 阅读 · 0 评论 -
基于Curator操作ZooKeeper(二)-Watcher操作
Java原生API操作ZooKeeper可参看:Java原生API操作Zookeeper(一)Java原生API操作Zookeeper(二)相关内容:基于Curator操作ZooKeeper(一)-基本操作基于Curator操作ZooKeeper(二)-Watcher操作-补充TreeCache基于Curator操作ZooKeeper(三)-Curator整合Spring...原创 2018-10-13 23:10:38 · 2795 阅读 · 0 评论 -
ZooKeeper中的epoch
ZooKeeper中ZXID是一个长度64位的数字,其中低32位是按照数字递增,即每次客户端发起一个proposal,低32位的数字简单加1。高32位是leader周期的epoch编号。查看当前的epoch:当前epoch是8。现在将leader stop,剩余两台机器会重新选举一个leader:此时epoch是9,即与ZAB协议一致。 ...原创 2018-10-07 13:31:40 · 7220 阅读 · 6 评论 -
ZooKeeper查看事务日志
zoo.cfg中可以通过dataLogDir来配置zookeeper的事务日志的输出目录。但是这些日志文件是二进制的,无法通过普通的查看名单看。需要通过org.apache.zookeeper.server.LogFormatter。 命令如下:java -cp :/usr/local/zookeeper/zookeeper/lib/slf4j-api-1.6.1.jar:/usr/lo...原创 2018-10-07 14:08:48 · 2372 阅读 · 0 评论 -
再理解ZAB协议
ZAB 协议全称是Zookeeper Atomic Broadcast(Zookeeper 原子广播协议)。是为分布式协调服务ZooKeeper专门设计的一种支持崩溃恢复的原子广播协议。ZAB协议的开发设计人员在协议设计之初并没有要求其具有很好的扩展性,最初只是为雅虎公司内部那些高吞吐量、低延迟、健壮、简单的分布式系统场景设计的。在ZooKeeper的官方文档中也指出,ZAB协议并不像Paxos算...原创 2018-10-07 14:50:55 · 882 阅读 · 0 评论 -
基于Curator操作ZooKeeper(二)-Watcher操作-补充TreeCache
转自:https://blog.csdn.net/Leafage_M/article/details/78735485#treecacheJava原生API操作ZooKeeper可参看:Java原生API操作Zookeeper(一)Java原生API操作Zookeeper(二)相关内容:基于Curator操作ZooKeeper(一)-基本操作基于Curator操作ZooKe...转载 2018-10-13 23:22:59 · 1843 阅读 · 0 评论 -
ZooKeeper leader选举机制细节记录
首先在ZK中leader选举有这么几个细节:1.ZXID最大会被设置为leader,因为ZXID越大,数据越新;2.如果集群中有几个服务器具有相同的ZXID,那么SID较大的那台服务器成为leader;3.epoch随着新leader的产生会递增;4.服务器状态: 服务器具有四种状态,分别是LOOKING、FOLLOWING、LEADING、OBSERVING。 LO...原创 2018-10-07 21:07:22 · 966 阅读 · 1 评论 -
Java原生API操作Zookeeper(二)
基于Curator操作ZooKeeper可参看:基于Curator操作ZooKeeper(一)-基本操作基于Curator操作ZooKeeper(二)-Watcher操作基于Curator操作ZooKeeper(二)-Watcher操作-补充TreeCache相关内容:Java原生API操作Zookeeper(一)操作一建立、关闭连接,查看状态:ZK的客户端...原创 2018-10-08 16:58:28 · 500 阅读 · 0 评论 -
ZooKeeper 倪超著 观后感
转自:https://blog.csdn.net/dowslake/article/details/73864922拿到这本书时,花了一周时间看完,当时项目里有用到zk,就迫不及待的从jd下单。虽然目前工作中几乎用不到,但是对未知技术的好奇,迫使我没敲过代码一口气看完了。这本书写的非常的好,从原理到代码级的剖析,看后大为赞叹,推荐大家看一看。分布式一致性,zk是如何做到的?我简单总结下 (...转载 2018-10-15 11:04:35 · 230 阅读 · 0 评论 -
ZooKeeper的安装及配置
下载及安装进入ZooKeeper官网:https://zookeeper.apache.org/这两个都可以:将下载好的包上传至Linux:解压:最后将zookeeper放到/usr/local/zookeeper下:配置环境变量:别忘记 source /etc/profile。配置zoo.cfg关于zoo.cfg可参看:htt...原创 2018-10-05 00:05:31 · 485 阅读 · 0 评论 -
ZooKeeper Watcher监听机制(数据变更的通知)(二)(分析)
紧接着上一篇博客:https://blog.csdn.net/Dongguabai/article/details/82970852在输出内容中有这样两个结果:在ZooKeeper中,接口类Watcher用于表示一个标准的事件处理器,其定义了事件通知相关的逻辑,包含KeeperState和EventType两个枚举类,分别代表了通知状态和事件类型,同时定义了事件的回调方法:proc...原创 2018-10-11 22:56:17 · 702 阅读 · 0 评论