zookeeper详解

1.zookeeper是分布式系统中必不可少的组件,主要有以下四大优势:

1.名字服务

zookeeper名字服务可分为两个应用:

  1.类似JNDI功能,利用zookeeper的分层结构可以把分布式系统中各种服务器的名称、地址以及目录信息存放在zookeeper中,当我们需要是可以从zookeeper中读取。

    2.可以利用zookeeper循环节点的特性,在分布式环境下,可以生成有规律的唯一id编号。

2.配置管理

简单来说就是可以保证,配置文件在集群中的一致性。比如,当我们修改某一台服务器的配置文件时,zookeeper会监听到这个操作,把集群中其它服务器的配置文件也一块修改,从而实现集群配置文件的一致性。

3.分布式锁

在一个分布式系统环境中,集群中的每台服务器都提供着相同的服务,若一个工作需要由多个服务器去做的话,服务器之前就必须要协调,就会增加编程的复杂程度,但若是只用一个服务器来做的话,又可能会发生单点故障。因此比较好的做法就是使用zookeeper提供的分布式锁,先让某一个服务器做这件事情,当这台服务器宕机的时候释放锁,由其他服务器完成。这种方法也叫leader选举

4.集群管理

简单来说就是在分布式集群中,zookeeper会检测新老节点的增加和退出。

2.zookeeper的工作流程

简单来说就是:zookeeper集群启动后,client会连接到其中的一个节点,这个节点可以是leader或follower,连通后,节点会分配一个sessionId给client,发送ack回复消息给client,若客户端没有收到ack消息,则会连接下一个节点。client会周期性发送心跳给当前节点,保证与当前节点的链接不会丢失。若client需要读取数据,发送请求给节点,节点会返回数据给client,若client修改数据,需将数据和路径发给service,service转发给leader,leader再发给所有的follower,只有当follower节点超过半数响应成功,则会操作成功。

3.zookeeper环境安装及使用

一、单机安装

1.1 下载

进入要下载的版本的目录,选择.tar.gz文件下载

下载链接:http://archive.apache.org/dist/zookeeper/

 

1.2 安装

使用tar解压要安装的目录即可,以3.4.5版本为例

这里以解压到/usr/myapp,实际安装根据自己的想安装的目录修改(注意如果修改,那后边的命令和配置文件中的路径都要相应修改)

tar -zxf zookeeper-3.4.5.tar.gz -C /usr/myapp

 

1.3 配置

在主目录下创建data和logs两个目录用于存储数据和日志:

cd /usr/myapp/zookeeper-3.4.5
mkdir data
mkdir logs

 

在conf目录下新建zoo.cfg文件,写入以下内容保存:

tickTime=2000
dataDir=/usr/myapp/zookeeper-3.4.5/data
dataLogDir=/usr/myapp/zookeeper-3.4.5/logs
clientPort=2181

 

1.4 启动和停止

进入bin目录,启动、停止、重启分和查看当前节点状态(包括集群中是何角色)别执行:

./zkServer.sh start
./zkServer.sh stop
./zkServer.sh restart
./zkServer.sh status

二、集群模式

集群模式就是在不同主机上安装zookeeper然后组成集群的模式;下边以在192.168.220.128/129/130三台主机为例。

将第1.1到1.3步中安装好的zookeeper打包复制到129和130上,并都解压到同样的目录下。

 
2.1 conf/zoo.cfg文件修改

三个zookeeper的conf/zoo.cfg修改如下:

复制代码
tickTime=2000
dataDir=/usr/myapp/zookeeper-3.4.5/data
dataLogDir=/usr/myapp/zookeeper-3.4.5/logs
clientPort=2181
initLimit=5
syncLimit=2
server.1=192.168.220.128:2888:3888
server.2=192.168.220.129:2888:3888
server.3=192.168.220.130:2888:3888
复制代码

对于129和130,由于安装目录都是zookeeper-3.4.5所以dataDir和dataLogDir不需要改变,又由于在不同机器上所以clientPort也不需要改变

所以此时129和130的conf/zoo.cfg的内容与128一样即可。

 

2.2 data/myid文件修改

128 data/myid修改如下:

echo '1' > data/myid

129 data/myid修改如下:

echo '2' > data/myid

130 data/myid修改如下:

echo '3' > data/myid




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值