1、Zookeeper入门
1.1 概述
Zookeeper是一个开源的分布式的,为分布式框架提供协调服务的Apache项目。
1、Zookeeper工作机制
Zookeeper从设置模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,它负责储存和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper就将负责通知已经在Zookeeper上注册的那些观察者做出相应的反应。
1.2 特点
1、Zookeeper:一个领导者(Leader),多个跟随者(Follower)组成的集群。
2、集群中只要有半数以上节点存活,Zookeeper集群就能正常服务。所以Zookeeper适合安装奇数台服务器。
3、全局数据一致,每个Server保存一份相同的数据副本,Client无论连接到哪个Server,数据都是一致的。
4、更新请求顺序执行,来着同一个Client的更新请求按其发送顺序依次执行。
5、数据更新原子性,一次数据更新要么成功,要么失败。
6、实时性,在一定时间范围内,Client能读取到最新数据
1.3 数据结构
Zookeeper数据模型的结构与Unix文件系统很类似,整体上可以看作是一棵树,每个节点称做一个ZNode。每一个ZNode默认能储存1MB的数据,每个ZNode都可以通过其路径唯一标识。
1.4 应用场景
提供的服务包括:统一命名服务、统一配置管理、统一集群管理、服务器节点动态上下线、软负载均衡等。
1、统一命名服务
2、统一配置管理
(1)分布式环境系,配置文件同步非常常见
(a)一般要求一个集群中,所有节点的配置信息是一致的,比如kafka集群。
(b)对配置文件修改后,希望能够快速同步到各个节点上。
(2)配置管理可交由Zookeeper实现
(a)可将配置信息写入Zookeeper上的一个ZNode
(b)各个客户端服务器监听这个ZNode
(c)一旦ZNode中的数据被修改,Zookeeper将通知各个客户端服务器
3、统一集群管理
(1)分布式环境中,实时掌握每个节点的状态是必要的
(a)可根据节点实时状态做出一些调整
(2)Zookeeper可以实现实时监控节点状态变化
(a)可将节点信息写入Zookeeper上的一个ZNode节点
(b)监听这个ZNode可获取它的实时状态变化。
4、服务器动态上下线
5、软负载均衡
2、Zookeeper本地安装
Zookeeper文件获取
链接:https://pan.baidu.com/s/1kVisN2YWXH119vX8mVa_uQ
提取码:zhm6
2.1 本地模式安装
1、安装前准备
(1)安装JDK
(2)拷贝Zookeeper安装包到Linux系统下
(3)解压到指定目录
tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /opt/module/
2、配置修改
(1)将/opt/module/zookeeper-3.5.7/conf 这个路径下的 zoo_sample.cfg 修改为 zoo.cfg;
mv zoo_sample.cfg zoo.cfg
(2)打开 zoo.cfg 文件,修改 dataDir 路径
vim zoo.cfg
修改以下内容
dataDir=/opt/module/zookeeper-3.5.7/zkData
(3)在/opt/module/zookeeper-3.5.7/这个目录上创建 zkData 文件夹
mkdir zkData
3、操作Zookeeper
(1)启动Zookeeper
bin/zkServer.sh start
(2)查看进程是否启动
jps
(3)查看状态
bin/zkServer.sh status
(4)启动客户端
bin/zkCli.sh
(5)退出客户端
quit
(6)停止 Zookeeper
bin/zkServer.sh stop
2.2 配置参数解读
1、tickTime = 2000;通信心跳时间,Zookeeper服务器与客户端心跳时间,单位毫秒
2、initLimit=10:LF初始通信时限
Leader和Follower初始连接时能容忍的最多心跳数(tickTime的数量)
3、syncLimit=5:LF同步通信时限
Leader和Follower之间通信时间如果超过syncLimit*tickTime,Leader认为Follower死掉,从服务器列表中删除掉Follower。
4、dataDir:保存Zookeeper中的数据
注意:默认的tmp目录,容易被Linux系统定期删除,所以一般不用默认的tmp目录。
5、clientPort=2181:客户端连接端口,通常不做修改