Zookeeper是Hadoop下的一个子项目,主要用来在分布式环境下提供分布式锁、配置管理、名字服务、群组服务。它具有很高的可用性、稳定性、可靠性。它在分布式应用中像一把瑞士军刀,很多地方都用得着,像我们的DMS系统中就用它来提供分布式锁服务和动态配置服务。
Zookeeper就像google在云技术领域提供的四大金刚之chubby(分布式锁服务),采用了简化的praxos算法来确保zookeeper集群节点的数据一致性。Zookeeper可以部署为standalone模式或quorum模式。Standalone模式就是只有单个Zookeeper server提供服务,优点是部署简单,缺点是有单点故障,不能提供高负载,可靠性无法保证,一旦server当机,将不能提供服务,这种模式主要使用在测试环境中,生产环境不建议采用这种模式。Quorum模式则正好相反,只要Quorum的成员有一半以上处于正常状态,就能对外提供服务,具有高可用性,Quorum成员可以共同分担业务请求的负载。没有单点故障。下图是zookeeper的架构图。
zookeeper提供的简单接口:
Zookeeper查询命令
Zookeeper查询命令主要用来查询服务器端的数据,不会更改服务器端的数据。所有的查询命令都可以即刻从client连接的server立即返回,不需要leader进行协调,因此查询命令得到的数据有可能是过期数据。但由于任何数据的修改,leader都会将更改的结果发布给所有的Follower,因此一般说来,Follower的数据是可以得到及时的更新。这些查询命令包括以下这些命令:
1. exists:判断指定path的node是否存在,如果存在则返回true,否则返回false.
2. getData:从指定path获取该node的数据
3. getACL:获取指定path的ACL。
4. getChildren:获取指定path的node的所有孩子结点。
所有的查询命令都可以指定watcher,通过它来跟踪指定path的数据变化。一旦指定的数据发生变化(create,delete,modified,children_changed),服务器将会发送命令来回调注册的watcher. Watcher详细的讲解将在Zookeeper的Watcher中单独讲解。
Zookeeper修改命令
Zookeeper修改命令主要是用来修改节点数据或结构,或者权限信息。任何修改命令都需要提交到leader进行协调,协调完成后才返回。修改命令主要包括:
1. createSession:请求server创建一个session
2. create:创建一个节点
3. delete:删除一个节点
4. setData:修改一个节点的数据
5. setACL:修改一个节点的ACL
6. closeSession:请求server关闭session
任何修改命令都需要leader协调。 在leader的协调过程中,需要3次leader与Follower之间的来回请求响应。并且在此过程中还会涉及事务日志的记录,更糟糕的情况是还有take snapshot的操作。因此此过程可能比较耗时。但Zookeeper的通信中最大特点是异步的,如果请求是连续不断的,Zookeeper的处理是集中处理逻辑,然后批量发送,批量的大小也是有控制的。如果请求量不大,则即刻发送。这样当负载很大时也能保证很大的吞吐量,时效性也在一定程度上进行了保证。
#snapShot存放路径
dataDir=data
#transaction log 存放路径
dataLogDir=dataLog
#接收客户端请求的server端口,默认为
clientPort=2181
#代表1 tickTime多少毫秒,默认为2000毫秒
tickTime=2000
#初始化leader的时间,如果超过initLimit时间还没有收到大多数Follower的newLeader响应,则重新与各follower连接。
initLimit=5
#follower与leader之间的超时时间
syncLimit=5
#0:LeaderElection;1:AuthFastLeaderElection 非授权模式 2:AuthFastLeaderElection 授权模式 3:FastLeaderElection
electionAlg=0
#允许同一个client向server提交了请求,但还未返回的最大请求数
maxClientCnxns=100
#server.servrId=host:port:port
server.1=localhost:2881:3881
server.2=localhost:2882:3882
server.3=localhost:2883:3883
server.4=localhost:2884:3884
server.5=localhost:2885:3885
#group与weight跟大多数同意的策略相关,大多数同意策略为让所有组有超过一半权重的server已经确认过,则可以通过,
#如果没有指定server的权重,则默认为1,group中一定要包含所有的server,遗漏或多余都不行,当然可以不配,如果不配
#则weight也不需要配置
#group.groupId=serverId1:serverId2:serverId3:serverIdn
group.1=1:3:5
group.2=2:4
#weight.serverId=长整型数
weight.1=2
weight.2=3
weight.5=4
以上是集群环境下3.2.2版本的服务器端配置文件。在集群环境下每个server需要一个标识server编号的标识文件,这个标识文件需要放在data目录下,比如dataDir目录是/home/joe/zookeeper/data,则这个文件应该在data目录下,文件内容非常简单,就是一个数字编号,对应配置文件中指定的server.number,这个编号不能搞错,他们是通过这个编号来标识不同server的。配置文件准备就绪后,切换到zookeeper的安装目录/bin,你会看到一些zk*.sh. 比如zkCleanup.sh
zkCli.sh zkEnv.sh zkServer.sh。可以检查一下shell脚本来搞清该脚本的用途。zkServer.sh就是用来启动zookeeper server的。zkClearnup.sh是用来清除哪些不再使用的日志文件和snapshot文件。启动脚本zkServer.sh start。正常情况就可以看到以下信息,代表你的集群环境配置好了。恭喜你,让我们一起zookeeper使用里程吧。
- 大小: 12.6 KB
- 大小: 24.6 KB
分享到:
相关推荐
在系列之八和九中,介绍了ZooKeeper的基本操作和API使用,开发者可以使用这些API在程序中实现与ZooKeeper的交互,创建、读取、更新和删除Znodes,以及监听节点变化。 最后,ZooKeeper的一致性保证和Leader选举...
总的来说,Zookeeper作为一款强大的分布式协调服务,是构建大规模分布式系统的基石之一。掌握其基本原理和使用方法,对解决分布式环境中的诸多挑战至关重要。通过不断实践和学习,你将能够更好地利用Zookeeper来优化...
标题中的“Zookeeper与Dubbo的介绍”涵盖了两个重要的分布式服务框架:Zookeeper和Dubbo。这两个工具在大型分布式系统中扮演着至关重要的角色。Zookeeper是Apache的一个开源项目,主要用于分布式协调服务,而Dubbo是...
zookeeper概述 zookeeper安装 zookeeper结构与原理 zookeeper应用
《Zookeeper:分布式服务治理的核心组件》 Zookeeper,作为Apache的一个开源项目,是分布式应用程序协调服务的基石,它是一个高可用、高性能的分布式一致性服务。在标题“zookeeper-3.4.6_zookeeper_”中,我们可以...
【Zookeeper的安装与介绍】 Zookeeper是一款开源的分布式协调服务,由Apache基金会开发,它设计的主要目标是简化分布式环境下的复杂性,如配置管理、命名服务、分布式同步和组服务等。Zookeeper以集中式服务的形式...
本文将详细介绍Zookeeper可视化工具的相关知识点,并探讨如何利用它们来优化Zookeeper的管理与维护。 ### 1. Zookeeper GUI工具的功能 Zookeeper可视化工具通常具备以下主要功能: - **节点浏览**:显示Zookeeper...
为了解决这些问题,本文将介绍如何在 ZooKeeper 中增加权限登录验证,以限制访问 IP 地址。 一、背景知识 ZooKeeper 是一个基于 Java 的分布式协调服务,它可以为分布式应用提供配置管理、名字服务、分布式锁等...
新功能 ZOOKEEPER-3301-强制执行配额限制 ZOOKEEPER-3601 - 介绍故障注入框架:ZooKeeper 的 Byteman ZOOKEEPER-3907-添加有关指标警报的文档 ZOOKEEPER-4211-向 Prometheus 公开配额指标
然而,由于描述中提到的链接及提取码无法在此环境中验证其真实性与有效性,因此我们主要依据“尚硅谷大数据之Zookeeper视频”这一标题来展开讨论。 ### Zookeeper简介 Zookeeper是Apache软件基金会的一个顶级项目...
Linux 集群搭建是 ZooKeeper 的一种常见应用场景,本文将详细介绍 ZooKeeper Linux 集群搭建流程。 准备前提 在开始搭建 ZooKeeper 集群之前,需要提前在本地安装好 JDK,因为 ZooKeeper 是用 Java 编写的,需要...
ZooKeeper技术原理与应用 ZooKeeper是一种分布式协调服务,用于维护和监控存储数据状态的变化,解决分布式集群中应用程序的一致性问题。 ZooKeeper的核心是原子广播机制,保障了各个Server之间的同步。 ZooKeeper...
介绍了关于zookeeper的使用、原理及经典案例,可供学习参考
Zookeeper 是一个分布式的,开放源码的分布式应用程序协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终将简单易用的接口和性能高效、功能稳定的系统提供给用户。...
3.4.9版本是ZooKeeper的一个稳定版本,提供了一系列增强功能和性能优化。在本文中,我们将深入探讨如何在Windows和Linux操作系统上安装、配置和使用ZooKeeper 3.4.9。 一、ZooKeeper基础 1.1 ZooKeeper的角色:...
apache-zookeeper-3.7.1 apache-zookeeper-3.7.1 apache-zookeeper-3.7.1 apache-zookeeper-3.7.1 apache-zookeeper-3.7.1 apache-zookeeper-3.7.1 apache-zookeeper-3.7.1 apache-zookeeper-3.7.1 apache-zookeeper...
通过以上对Zookeeper的详细介绍,我们可以看到它在分布式系统中的重要地位,无论是数据一致性还是服务协调,Zookeeper都提供了强大的支持。对于开发者而言,理解和掌握Zookeeper的工作原理和使用技巧,无疑能提升在...