ZooKeeper常见问题(转)

zookeeper集群配置&kafka安装常见问题 一 简介 Zookeeper是一个分布式应用服务协调服务,为分布式应用提供一致性服务,包括配置维护、域名服务、分布式同步、组服务等(源自百科) kafka是一种高吞吐量的分布式发布订阅消息系统,可以处理消费者规模的网站中的所有动作流数据。具有以下特性 通过O(1)的磁盘数据结构听过消息的持久化 高吞吐量 支持通过Kafka服务器和消费机集群来分区消息 支持Hadoop并行数据加载... 阅读详情

这段时间来,也在和公司里的一些同学交流使用zk的心得,整理了一些常见的zookeeper问题。这个页面的目标是解答一些zk常见的使用问题,同时也让大家明确zk不能干什么。页面会一直更新。

客户端

1. 客户端对ServerList的轮询机制是什么
随机,客户端在初始化( new ZooKeeper(String connectString, int sessionTimeout, Watcher watcher) )的过程中,将所有Server保存在一个List中,然后随机打散,形成一个环。之后从0号位开始一个一个使用。
两个注意点:1. Server地址能够重复配置,这样能够弥补客户端无法设置Server权重的缺陷,但是也会加大风险。(比如: 192.168.1.1:2181,192.168.1.1:2181,192.168.1.2:2181). 2. 如果客户端在进行Server切换过程中耗时过长,那么将会收到SESSION_EXPIRED. 这也是上面第1点中的加大风险之处。更多关于客户端地址列表相关的,请查看文章《ZooKeeper客户端地址列表的随机原理》

2.客户端如何正确处理CONNECTIONLOSS(连接断开) 和 SESSIONEXPIRED(Session 过期)两类连接异常
在ZooKeeper中,服务器和客户端之间维持的是一个长连接,在 SESSION_TIMEOUT 时间内,服务器会确定客户端是否正常连接(客户端会定时向服务器发送heart_beat),服务器重置下次SESSION_TIMEOUT时间。因此,在正常情况下,Session一直有效,并且zk集群所有机器上都保存这个Session信息。在出现问题情况下,客户端与服务器之间连接断了(客户端所连接的那台zk机器挂了,或是其它原因的网络闪断),这个时候客户端会主动在地址列表(初始化的时候传入构造方法的那个参数connectString)中选择新的地址进行连接。
好了,上面基本就是服务器与客户端之间维持长连接的过程了。在这个过程中,用户可能会看到两类异常CONNECTIONLOSS(连接断开) 和SESSIONEXPIRED(Session 过期)。
CONNECTIONLOSS发生在上面红色文字部分,应用在进行操作A时,发生了CONNECTIONLOSS,此时用户不需要关心我的会话是否可用,应用所要做的就是等待客户端帮我们自动连接上新的zk机器,一旦成功连接上新的zk机器后,确认刚刚的操作A是否执行成功了。
SESSIONEXPIRED发生在上面蓝色文字部分,这个通常是zk客户端与服务器的连接断了,试图连接上新的zk机器,这个过程如果耗时过长,超过 SESSION_TIMEOUT 后还没有成功连接上服务器,那么服务器认为这个session已经结束了(服务器无法确认是因为其它异常原因还是客户端主动结束会话),开始清除和这个会话有关的信息,包括这个会话创建的临时节点和注册的Watcher。在这之后,客户端重新连接上了服务器在,但是很不幸,服务器会告诉客户端SESSIONEXPIRED。此时客户端要做的事情就看应用的复杂情况了,总之,要重新实例zookeeper对象,重新操作所有临时数据(包括临时节点和注册Watcher)。

3. 不同的客户端对同一个节点是否能获取相同的数据

4.  一个客户端修改了某个节点的数据,其它客户端能够马上获取到这个最新数据吗

ZooKeeper不能确保任何客户端能够获取(即Read Request)到一样的数据,除非客户端自己要求:方法是客户端在获取数据之前调用org.apache.zookeeper.AsyncCallback.VoidCallback, java.lang.Object) sync.
通常情况下(这里所说的通常情况满足:1. 对获取的数据是否是最新版本不敏感,2. 一个客户端修改了数据,其它客户端需要不需要立即能够获取最新),可以不关心这点。
在其它情况下,最清晰的场景是这样:ZK客户端A对 /my_test 的内容从 v1->v2, 但是ZK客户端B对 /my_test 的内容获取,依然得到的是 v1. 请注意,这个是实际存在的现象,当然延时很短。解决的方法是客户端B先调用 sync(), 再调用 getData().

5. ZK为什么不提供一个永久性的Watcher注册机制

不支持用持久Watcher的原因很简单,ZK无法保证性能。
6. 使用watch需要注意的几点

a. Watches通知是一次性的,必须重复注册.
b. 发生CONNECTIONLOSS之后,只要在session_timeout之内再次连接上(即不发生SESSIONEXPIRED),那么这个连接注册的watches依然在。
c. 节点数据的版本变化会触发NodeDataChanged,注意,这里特意说明了是版本变化。存在这样的情况,只要成功执行了setData()方法,无论内容是否和之前一致,都会触发NodeDataChanged。
d. 对某个节点注册了watch,但是节点被删除了,那么注册在这个节点上的watches都会被移除。
e. 同一个zk客户端对某一个节点注册相同的watch,只会收到一次通知。即

for( int i = 0; i < 3; i++ ){
    zk.getData( path, true, null );
    zk.getChildren( path, true );
}

7.我能否收到每次节点变化的通知

如果节点数据的更新频率很高的话,不能。
原因在于:当一次数据修改,通知客户端,客户端再次注册watch,在这个过程中,可能数据已经发生了许多次数据修改,因此,千万不要做这样的测试:”数据被修改了n次,一定会收到n次通知”来测试server是否正常工作。(我曾经就做过这样的傻事,发现Server一直工作不正常?其实不是)。即使你使用了GitHub上这个客户端也一样。

8.能为临时节点创建子节点吗

不能。

9. 是否可以拒绝单个IP对ZK的访问,操作

ZK本身不提供这样的功能,它仅仅提供了对单个IP的连接数的限制。你可以通过修改iptables来实现对单个ip的限制,当然,你也可以通过这样的方式来解决。https://issues.apache.org/jira/browse/ZOOKEEPER-1320

10. 在getChildren(String path, boolean watch)是注册了对节点子节点的变化,那么子节点的子节点变化能通知吗

不能

11.创建的临时节点什么时候会被删除,是连接一断就删除吗?延时是多少?

连接断了之后,ZK不会马上移除临时数据,只有当SESSIONEXPIRED之后,才会把这个会话建立的临时数据移除。因此,用户需要谨慎设置Session_TimeOut

12. zookeeper是否支持动态进行机器扩容?如果目前不支持,那么要如何扩容呢?

截止2012-03-15,3.4.3版本的zookeeper,还不支持这个功能,在3.5.0版本开始,支持动态加机器了,期待下吧: https://issues.apache.org/jira/browse/ZOOKEEPER-107

13.zookeeper是否会自动进行日志清理?如果进行日志清理?

zk自己不会进行日志清理,需要运维人员进行日志清理,详细关于zk的日志清理,可以查看《ZooKeeper日志清理》

http://blog.youkuaiyun.com/jiang_bing/article/details/9280725
处理Zookeeper故障:排除常见故障和错误 [toc] 引言 Zookeeper是一款非常流行的分布式协调软件,广泛应用于许多场景,如微服务架构、负载均衡、集群管理、安全性控制等。然而,在使用Zookeeper的过程中,经常会遇到各种故障和错误。本篇文章将介绍如何处理Zookeeper故障,并提供常见的解决方案和技巧。 阅读详情

相关推荐

【zookeeper】ZooKeeper常见问题

命名服务就是」**命名服务是指通过「指定的名字」来获取资源或者服务地址。Zookeeper可以创建一个「全局唯一的路径」,这个路径就可以作为一个名字。被命名的实体可以是「集群中的机器,服务的地址,或者是远程的对象」等。一些分布式服务框架(RPC、RMI)中的服务地址列表,通过使用命名服务,客户端应用能够根据特定的名字来获取资源的实体、服务地址和提供者信息等。「配置管理」实际项目开发中,我们经常使用.properties或者xml需要配置很多信息,如数据库连接信息、fps地址端口等等。哈哈,...

九师兄 1049

ZooKeeper FAQ

http://rdc.taobao.com/team/jm/    这段时间来,也在和公司里的一些同学交流使用zk的心得,整理了一些常见的zookeeper问题。这个页面的目标是解答一些zk常见的使用问题,同时也让大家明确zk不能干什么。页面会一直更新。 客户端 1. 客户端对ServerList的轮询机制是什么       随机,客户端在初始化( new ZooKeeper(St

Xiao_Qiang_的专栏 753

一文带你弄懂thermal governor IPA

当current temp < target temp时,使用k_pu,当current temp >= target temp时,使用k_po。如果current_temperature = switch_on_temp时,则k_p = k_pu,这时Pmax。如果current_temperature = target_temp时,则k_p = k_po,这时Pmax。2、解析dts,获得switch_on_temp和target_temp。3、初始化k_pu/k_po/k_i/k_d的常数。

yxw0609131056的博客 1245

Zookeeper

ZooKeeper知识点

小道的博客 847

Linux中断子系统分析之(四):驱动程序申请中断

中断子系统中有一个重要的设计机制,那就是Top-half和Bottom-half,将紧急的工作放置在Top-half中来处理,而将耗时的工作放置在Bottom-half中来处理。 如果中断不分上下半部处理,那么意味着只有等上一个中断完成处理后才会打开中断,下一个中断才能得到响应。当某个中断处理处理时间较长时,很有可能就会造成其他中断丢失而无法响应,影响系统性能。 中断分成上下半部处理可以提高中断的响应能力,在上半部处理完成后便将中断打开,这样就可以响应其他中断了,等到中断退出的时候再进行下半部的处理。为了进

m0_46525308的博客 1225

AFE芯片做什么用的?AFE(Analog Front End) 模拟前端

AFE采样精度的影响因素非常多,需要综合考虑各种因素,并根据实际应用场景来选择合适的参数和方法。通过减少噪声、提高采样频率、调节放大器增益、降低电源噪声、优化传输线路、进行温度补偿、选择合适的ADC分辨率、根据信号类型选择合适的AFE参数、进行器件匹配和校准等方法,可以提高AFE的采样精度,从而更好地满足各种应用需求。版权声明:本文为优快云博主「czf.Forver」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

学海无涯的专栏 4万+

springcloud-zookeeper分布式配置中心

springcloud-zoookeeper分布式配置中心 ​ 配置信息一般写在application.yml或者bootstrap.yml文件中,bootstrap.yml文件优先级高。但是分布式配置中心需要读取一些公共的配置和根据不同的项目模块读取不同zk节点的配置信息,所以配置信息应该建立在zk节点下。 1.配置中心所需的zookeeper相关配置 server: port: 9001 spring: application: name: Provider profiles:

weixin_42507606的博客 1292

【Jlink & C#】通过C#实现Jlink RTT上位机的功能

某天看到安富莱家的自己开发的调试器可以实现输出中文调试信息到自己编写的Jlink RTT上位机上,觉得无比神奇,略好奇到底是如何做的,找了很久,发现其上位机的对应的实现好像也没有完全开源出来。后来经过很多搜索确认,知道了几个事实:那么有没有可能用C#来控制Jlink呢?答案是,有!!! 解决思路在于,C#调用JLinkARM.dll里面的函数 这里转载下我认为很有意义的发现结合以上的几个发现,加上我自己的测试,我把我对接JLinkARM.dll的C#接口分享出来,不保证都能用,我只是测试了几个常用的功能,R

一只爱做笔记的码农 9147

一个客户端修改了某个节点的数据,其他客户端能够马上获取到这个最新数据吗

ZooKeeper不能确保任何客户端能够获取(即Read Request)到一样的数据,除非客户端自己要求,方法是客户端在获取数据之前调用org.apache.zookeeper.AsyncCallbac k.VoidCallback, java.lang.Object) sync。 通常情况下(这里所说的通常情况满足:1. 对获取的数据是否是最新版本不敏感,2. 一个客户端修改了数据,其它客户端是否需要立即能够获取最新数据),可以不关心这点。 在其它情况下,最清晰的场景是这样:ZK客户端A对 /my_

weixin_59295776的博客 750

基于32nm CMOS工艺的传输门D触发器设计及HSPICE仿真分析

根据半导体集成电路、利用Hspice软件以及数字电路等课程的知识,使用集成电路CMOS工艺完成触发器的设计,帮助初学者熟悉和掌握集成电路芯片电路设计及模拟方法和技巧

2302_81301620的博客 2452

【定位模块项目实战】gnss_localizer、lidar_localizer功能包解析

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录系列文章目录前言一、1.2.3.4.二、1.2.3.4.三、1.2.3.4.四、1.2.3.4.总结参考资料 前言 认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长! 本文先对**【无人驾驶autoware项目实战】感知–定位模块**做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章 提示:以下是本篇文章正文内容 一、 1. 2. 3. 4. . . 二、

qq_35635374的博客 1931

[转] ZooKeeper常见问题整理

http://blog.youkuaiyun.com/tanga842428/article/details/52247756 转载于:https://www.cnblogs.com/lordcheng/p/7426708.html

weixin_30802171的博客 127

IgH EtherCAT 从入门到精通:第 4 章 网络设备驱动选型与配置

摘要:本章详细介绍了EtherCAT主站网络设备驱动的选型与配置。IgH EtherCAT Master提供Generic通用驱动和Native原生驱动两种方案:Generic驱动通过Linux Socket接口实现,兼容性强但实时性较差;Native驱动通过修改网卡驱动绕过内核协议栈,具有更低延迟和更小抖动。文章具体分析了e1000/e1000e/igb/igc等Intel网卡驱动以及r8169/8139too等Realtek驱动的配置方法,并提供了驱动选型建议。对于实时性要求高的场景,推荐使用Nativ

从事嵌入式linux android驱动开发,拥有全栈能力 304

Docker中使用Zookeeper项目常见问题解决方案

Docker中使用Zookeeper项目常见问题解决方案 项目基础介绍和主要编程语言 该项目是使用Docker技术来部署和管理Zookeeper服务的开源项目。Zookeeper是一个开源的分布式协调服务,它为分布式应用提供了高效且可靠的协调服务,支持配置维护、命名服务、分布式同步和组服务等。该项目提供了一个Docker镜像,可以帮助用户快速搭建和维护Zookeeper集群。 主要的编程语言为Do...

gitblog_01160的博客 706

K8S搭建(centos)完整版

每个人都有惰性,但不断学习是好好生活的根本,共勉!

感谢阅读 4147

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

zookeeper常见问题总结

zookeeper常见面试题总结 zookeeper 是什么? zookeeper 都有哪些功能? zookeeper 有几种部署模式? zookeeper 怎么保证主从节点的状态同步? 集群中为什么要有主节点? 集群中有3台服务器,其中一个节点宕机,这时候 zookeeper 还可以使用吗? 说一下 zookeeper 的通知机制? 1. zookeeper 是什么? zookeeper...

努力努力再努力L 1788

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Zookeeper(80)Zookeeper的常见问题有哪些?

Zookeeper 在分布式系统中扮演着重要的角色,常见的问题主要集中在配置、性能、连接管理、数据一致性、节点故障和安全等方面。通过正确的配置、优化硬件资源、合理的客户端连接管理、定期备份和监控等方法,可以有效解决这些问题,确保 Zookeeper 系统的高可用性和可靠性。

qq_43012298的博客 1221

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

【转】zookeeper 的监控工具

公司很多产品会使用zookeeper,比如Meta消息中间件,在测试的过程中,我们经常需要查询zookeeper里面的信息来精确定位问题。目前项目中有开发团队自己写的浏览器node-zk-browser,是基于node.js的express.js框架和node-zookeeper客户端实现的,具体可参考https://github.com/killme2008/node-zk-browser.

汪翰翔的Blog 3万+

Zookeeper开发常见问题

背景与目的 Zookeeper开发过程中遇到一些常见问题,为了后续开发不犯同样的错误,总结一下此类问题,并进行分析和解决。 适合人员 主要适合zookeeper开发、测试及运维相关人员。 问题与解决 一、 关于zookeeper_init函数的使用 问题描述: 开发人员在调用zookeeper_init函数时,若返回一个非空句柄zhan

kobejayandy的专栏 1万+

Zookeeper-Docker 项目常见问题解决方案

Zookeeper-Docker 项目常见问题解决方案 一、项目基础介绍和主要编程语言 Zookeeper-Docker 是一个开源项目,它提供了一个使用 Docker 容器运行 Apache ZooKeeper 的解决方案。该项目旨在简化 ZooKeeper 的部署和运行过程,使得用户可以在容器化环境中轻松地搭建 ZooKeeper 服务。 该项目主要使用以下编程语言和工具: Dockerfi...

gitblog_00795的博客 1129

kafka集群+zookeeper集群常见问题与命令

常见疑问1、生产者无法产生消息 kafka.common.FailedToSendMessageException: Failed to send messages after 3 tries. 将slf4j-nop-1.7.21.jar上传到kafka的lib包下 参考文章:http://stackoverflow.com/questions/23903843/apache-kafka-ex

变是永远不变的...... 4070

Zookeeper集群搭建常见问题

通过命令:ZkServer.sh status查看zookeeper状态显示以下错误 1. Mode: standalone zookeeper处于单机模式,说明此时zookeeper的zoo.cfg文件配置有问题 2. Error contacting service. It is probably not running. (1)由于我们总共使用三个zookeeper服务器,所以会涉及到zookeeper之间的选举问题 因此我们需要同时在三个zookeeper中运行 zkSer...

m0_59501411的博客 3214

Zookeeper常见问题锦集

文章目录什么是集群脑裂?为什么Zookeeper一般安装为奇数个节点?Zookeeper节点必须为奇数吗?为什么?当挂掉客户端对应的zookeeper节点,客户端如何去选择其他的节点?Zookeeper的锁是如何实现的?Zookeeper的Leader选举如何实现的?服务器启动期间Leader选举服务器运行时期的Leader选举什么是Zookeeper的监视与通知?Zookeeper的znode的...

千生百世,缘起缘灭,皆已注定。 2108

ZooKeeper 常见问题与故障处理指南

ZooKeeper常见问题与故障处理指南摘要 ZooKeeper作为分布式协调服务,其稳定性直接影响上层系统。本文总结了6类典型问题及解决方案: 会话过期:优化GC、合理设置sessionTimeout,使用Curator客户端自动恢复 连接丢失:配置指数退避重试策略,避免频繁重连 磁盘空间不足:开启自动清理,分离事务日志与快照存储 连接数超限:调整maxClientCnxns,优化客户端连接池 内存溢出:控制ZNode数量和大小,限制Watcher数量 Leader频繁选举:检查GC/磁盘性能,调整syn

csdn_tom_168的博客 1649
上一篇: zookeeper 入门讲解实例 转
下一篇: HTTP/TCP/IP
JIESA
博客等级 码龄16年 212粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值