Zookeeper(学习笔记7)

Zookeeper

什么是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安装与配置环境

  1. 首先zookeeper文件拖入到software文件夹,并解压到module文件夹
  2. 在etc/profile.d/my_envy.sh文件中添加环境变量

#ZOOKEEPER_HOME

export ZOOKEEPER_HOME=/opt/module/zookeeper

export PATH=$PATH:$ZOOKEEPER_HOME/bin

  1. 分发脚本到各个服务器上
  2. 扫描文件
  3. 修改配置文件——conf/zoo.cfg (在修改配置文件前,记得把zoo_sample.cfg文件夹的名字改为 zoo.cfg)

进入 zoo_sample.cfg

在文件中修改

dataDir = /tmp/zookeeper 为  dataDir = /opt/module/zookeeper/zkData

Zookeeper 集群配置

Zk实际上有2种运行模式

  1. 单机模式

在上述完成操作后,就可以配置

在zookeeper的根目录下输入:

zkServer.sh  start

Jps 查看节点,就可以看到了相应的节点产生

jsp -l 显示全称

所谓的单机模式,就是一台集群进行启动——在生产操作下一般不使用单机模式

关闭指令 : zkServer.sh stop

  1. 集群模式

在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文件进行对照更改

  1. 集群zk启动

指令:zkServer.sh start

检查节点

4.登录zk客户端

zkCli.sh

Zookeeper命令行操作

在上节课完成了 zk的安装后,接下来课程主要围绕的是如何操作zk

Zk的主要操作分为两种

  1. 客户端:主要功能:增删改查
  2. Api

1.客户端操作

注意:w的监听功能都是一次有效

关于节点类型

  1. 持久目录节点
  2. 持久编号目录节点
  3. 临时目录节点
  4. 临时编号目录几点

关于节点信息描述

cZxid :表示事务id编号,一般可把该ID分成两段进行理解,第一段表示该事务的领导者第几次选举出来的

第二段表示操作该事务是第几次操作

ctime:表示创建时间,从1970开始 以毫秒为计算单位

mZxid:表示最后更新的事务

mtime:最后修改的时间

pZxid:表示最后更新的子节点

cversion:子节点的变化次数

dataversion 数据变化号

aclVersion:访问控制变化号,表示可访问数

ephemeralOwner:子节点属于层级的id,归属,如果该数据有值则表示该子节点是一个临时节点

API设置

在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功能的步骤

  1. 创建对象

2.Api编写

3.释放资源

在Xshell 中建立连接,后运行以上的Test代码

验证成功

查询API编写

查询API编写

次节点状态信息stat

更改子节点

删除节点

程序日志

Zookeeper里 查看的日志 是单个框架的日志,log4j——运行日志,logs-记录文件

Zk查看不是集群日志,框架的日志

  1. 日志位置

日志存在框架内,a. tar压缩包解压的文件 -》 log4j 或者是 在框架解压目录中的logs文件

Rpm文件安装的框架——》/var/log 目录下

  1. 怎么去看日志

cat   vim/vi

tail 命令去查看日志

tail -n 500 文件名

或者 把文件下载下来 在自己电脑本地查看

  1. 看什么内容,关注点在哪里,日志结构

一般情况下

  1. 时间
  2. 日志级别
  3. 日志输出主体是谁?(那个功能或者api进行的操作并被记录下来)
  4. 该操作做了什么 ?

  1. 关于日志权限

 INFO :日志详细问题:粗粒度越低反应文件就会越笼统,越高的话反应信息就更加精细,主要呈现在应用或者任务在运行过程的中的情况

DEBUG:作为故障处理时的文件记录,方便程序员能够清楚判断一些bug问题的处理

ALL: 最低权限, 所有端口或者用户都可进行访问的权限文件

WARN:进行警示,用来提示该操作会出现的问题或者造成的错误提示,当warn出现

时只是用来提示,但程序总体还是继续运行的。

ERROR:出现错误事件,可能仍然允许应用程序继续运行,但大部分会打断程序运行。需要进行修复

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值