赞
踩
什么是Zookeeper
Zookeeper是一种集中式服务,用于维护配置信息,命名,提供分布式同步和提供组服务。所有这些类型的服务都以分布式应用程序的某种形式使用。每次实施它们都需要做很多工作来修复不可避免的错误和竞争条件。由于难以实现这些类型的服务,应用程序最初通常会吝啬它们,这使得它们在变化的情况下变得脆弱并且难以管理。即使正确完成,这些服务的不同实现也会在部署应用程序时导致管理复杂性。
Zookeeper功能
(1)存储数据
(2)监听/推送
Zookeeper工作机制
基于观察者模式设计的分布式服务管理框架
Zookeeper的存储结构
目录树结构(在zk中没有目录和文件夹一说)
Zookeeper结构与特点
Zookeeper在集群中有一个了领导者和追随者
领导者和追随者是如何产生的?
这里假设3台服务器,102 103 104分别代表 id 1 2 3
当1服务器启动的时候,先投票给自己,然后把投票的信息报告发送给zk,而此时因为只有1服务器启动而2 3 服务器还没开启,所以1服务器就等待(选举状态)
此时2服务器启动与1服务器交换信息,然后投自己一票,因为序列上2大于1,并且票数过半2胜出成为leader(领导者),3服务器启动,交换信息,投自己一票,但是此时已经长生出leader了,所以3服务器编程了追随者。
每台服务器上都共享有所有的数据备份,不管是那个任务连接到任意服务器上都可以开始工作,不存在差异性,因为不存在差异性所以,工作的状态都是成功或者都是失败
#ZOOKEEPER_HOME
export ZOOKEEPER_HOME=/opt/module/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
进入 zoo_sample.cfg
在文件中修改
dataDir = /tmp/zookeeper 为 dataDir = /opt/module/zookeeper/zkData
Zk实际上有2种运行模式
在上述完成操作后,就可以配置
在zookeeper的根目录下输入:
zkServer.sh start
Jps 查看节点,就可以看到了相应的节点产生
jsp -l 显示全称
所谓的单机模式,就是一台集群进行启动——在生产操作下一般不使用单机模式
关闭指令 : zkServer.sh stop
在zoo_sample.cfg 配置文件末尾追加信息,添加相依服务器个数
server.2=hadoop102:2888:3888
server.3=hadoop103:2888:3888
server.4=hadoop104:2888:3888
保存文件并退出
在zk的根目录 天的 zkdata 文件文件夹中,创建一个文件
vim myid
填写服务器编号
2
保存退出
在102上的配置完成后
通过xsync把 zk根目录下的所有文件分发到各个服务器上zk配置文件
把每台服务上上相应的zkdata下的myid文件进行对照更改
指令:zkServer.sh start
检查节点
4.登录zk客户端
zkCli.sh
在上节课完成了 zk的安装后,接下来课程主要围绕的是如何操作zk
Zk的主要操作分为两种
1.客户端操作
注意:w的监听功能都是一次有效
关于节点类型
关于节点信息描述
cZxid :表示事务id编号,一般可把该ID分成两段进行理解,第一段表示该事务的领导者第几次选举出来的
第二段表示操作该事务是第几次操作
ctime:表示创建时间,从1970开始 以毫秒为计算单位
mZxid:表示最后更新的事务
mtime:最后修改的时间
pZxid:表示最后更新的子节点
cversion:子节点的变化次数
dataversion 数据变化号
aclVersion:访问控制变化号,表示可访问数
ephemeralOwner:子节点属于层级的id,归属,如果该数据有值则表示该子节点是一个临时节点
在IDEA上创建一个新的maven项目
pom文件添加(依赖文件添加)
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>RELEASE</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.8.2</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.5.7</version>
</dependency>
</dependencies>
log4j.properties 文件创建( 路径下创建)
log4j.rootLogger=INFO, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=target/spring.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
在java文件夹下创建package
创建zkClient的class文件中新建一个test类
在这里我们总共完成3步关于API功能的步骤
2.Api编写
3.释放资源
在Xshell 中建立连接,后运行以上的Test代码
验证成功
Zookeeper里 查看的日志 是单个框架的日志,log4j——运行日志,logs-记录文件
Zk查看不是集群日志,框架的日志
日志存在框架内,a. tar压缩包解压的文件 -》 log4j 或者是 在框架解压目录中的logs文件
Rpm文件安装的框架——》/var/log 目录下
cat vim/vi
tail 命令去查看日志
tail -n 500 文件名
或者 把文件下载下来 在自己电脑本地查看
一般情况下
INFO :日志详细问题:粗粒度越低反应文件就会越笼统,越高的话反应信息就更加精细,主要呈现在应用或者任务在运行过程的中的情况
DEBUG:作为故障处理时的文件记录,方便程序员能够清楚判断一些bug问题的处理
ALL: 最低权限, 所有端口或者用户都可进行访问的权限文件
WARN:进行警示,用来提示该操作会出现的问题或者造成的错误提示,当warn出现
时只是用来提示,但程序总体还是继续运行的。
ERROR:出现错误事件,可能仍然允许应用程序继续运行,但大部分会打断程序运行。需要进行修复
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。