Zookeeper简介和入门安装示例

本文介绍了Zookeeper的基本概念,包括其在分布式系统中的作用、数据模型、集群特性等,并提供了详细的安装步骤与基本操作示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


Zookeeper简介


初识Zookeeper

Zookeeper是一个为分布式应用提供协同服务的组件。它提供了一系列简便的功能给分布式系统实现更高等级的同步、配置管理、分组及命名。它设计的非常容易开发,使用了一种跟树形文件系统非常相似的数据模型。 Zookeeper使用Java的运行环境,能使用Java和C进行操作。

Zookeeper是非常简单的。Zookeeper通过一种可共享的继承式的命名空间让分布式程序之间相互协同,这种数据模型类似一个精简的文件系统。和一般的文件系统是为了存储数据不一样,Zookeeper的是数据是保存在内存中,这意味着高吞吐量和低延迟。

Zookeeper保证了高性能、高可用性和严格的访问顺序。它的高性能意味着能用在节点规模庞大的分布式系统中,高可用性使其避免了单点问题,严格的访问顺序使其客户端能实现精确的分布式协同。


Zookeeper的集群模式

Zookeeper是可集群的。很多分布式系统数据和执行程序都在各个节点上复制一份,Zookeeper也不例外。

这里写图片描述

Zookeeper通过存储的操作日志进行执行更新动作,各个节点之间能互相感知并通过保持数据的一致性。只要大多数服务器可用,整个Zookeeper集群就是可用的。客户端通过访问TCP访问Zookeeper服务器,包括request、response和心跳检测等。客户端一次只连接一台服务器,当连接的这台服务器不能访问后,会连接至另一台服务器。


Zookeeper的数据模型

Zookeeper的数据模型非常像标准文件系统,它使用分割符(/)来分割元素的各部分,Zookeeper每个节点都被定义为路径。和标准文件系统不同的是Zookeeper命名空间的节点既可以包含数据也能包含子节点,就好像文件系统的节点既可以是文件也可以是目录。Zookeeper被设计用来存储协同数据(状态信息、配置、路径),所以数据的存储量是非常轻量级的(几千节点)。为了更清晰的描述这个节点Zookeeper把它称之为znode.

这里写图片描述

Zookeeper有瞬时节点(ephemeral nodes)的概念,这些节点只有在创建它的会话(Session)存在时有效。当创建它的会话结束生命周期时,它也一并被删除。


Zookeeper的安装和运行


下载zookeeper

cd /usr/local/src
wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz

安装

tar -zxvf zookeeper-3.4.9.tar.gz -C /usr/local/
mv zookeeper-3.4.9 zookeeper
cp /usr/local/zookeeper/conf/zoo_sample.cfg /usr/local/zookeeper/conf/zoo.cfg

编辑zookeeper的参数

  • vi /usr/local/zookeeper/conf/zoo.cfg 配置的内容如下
# zookeeper最基本的时间单位(毫秒),它被用作检测心跳,Session最小的超时时间为tickTime的两倍
tickTime=2000

# 内存数据快照存储的地方,注意别使用/tmp目录;如没特别指定,操作的日志会存储至此
dataDir=/var/zookeeper

# 通讯端口
clientPort=2181

# initLimit is timeouts ZooKeeper uses to limit the length of time the ZooKeeper servers in quorum have to connect to a leader
# 允许各follower和leader之间的连接时间,超过tickTime*initLimit时会重新投票选举leader
initLimit=10

# leader和follower之间的能容忍的心跳检测时间,超过tickTime*syncLimit则从follower列表里剔除超时的follower
syncLimit=5

注:initLimit和syncLimit这两个参数集群模式下使用的


设置环境变量

  • vi /etc/profile 在底部加入以下内容
ZOOKEEPER_HOME=/usr/local/zookeeper
PATH=$PATH:$ZOOKEEPER_HOME/bin
export PATH
  • 使profile起作用: source /etc/profile

启动和关闭

zkServer.sh start #启动
zkServer.sh stop  #关闭zookeeper

由于已配置环境变量,可以直接使用zkServer.sh start启动Zookeeper

[root@localhost zookeeper]# zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

Zookeeper的简单操作


客户端连接

zkCli.sh

查看zk的目录

[zk: localhost:2181(CONNECTED) 0] ls /
[zookeeper]

创建一个znode

[zk: localhost:2181(CONNECTED) 1] create /massive this_is_massive_data
Created /massive
[zk: localhost:2181(CONNECTED) 2] ls /
[massive, zookeeper]

查看节点

[zk: localhost:2181(CONNECTED) 3] get /massive
this_is_massive_data
cZxid = 0x8
ctime = Sat Dec 10 23:01:03 PST 2016
mZxid = 0x8
mtime = Sat Dec 10 23:01:03 PST 2016
pZxid = 0x8
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 20
numChildren = 0

更改节点内容

[zk: localhost:2181(CONNECTED) 4] set /massive this_data_has_changed
cZxid = 0x8
ctime = Sat Dec 10 23:01:03 PST 2016
mZxid = 0x9
mtime = Sat Dec 10 23:02:48 PST 2016
pZxid = 0x8
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 21
numChildren = 0
[zk: localhost:2181(CONNECTED) 5] get /massive
this_data_has_changed
cZxid = 0x8
ctime = Sat Dec 10 23:01:03 PST 2016
mZxid = 0x9
mtime = Sat Dec 10 23:02:48 PST 2016
pZxid = 0x8
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 21
numChildren = 0

删除节点

[zk: localhost:2181(CONNECTED) 6] delete /massive
[zk: localhost:2181(CONNECTED) 7] ls /
[zookeeper]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值