zookeeper 简介及集群搭建


(ps:这是听课的笔记,记录一下)

zookeeper(使用的版本为zookeeper-3.4.6.tar.gz)

前提:本机已经安装好了JDK
zookeeper 安装:
下载zookeeper:
下载地址为:http://archive.apache.org/dist/zookeeper/
选择合适的版本,这里选择的为3.4.6

# 解压
tar -zxvf zookeeper-3.4.6.tar.gz
# 配置环境变量
vim /etc/profile
# 输入自己的路径,看自己的下载地址
export JAVA_HOME=/usr/local/soft/jdk1.8.0_191
export REDIS_HOME=/usr/local/soft/redis-5.0.10/src
export ZOOKEEPER_HOME=/usr/local/soft/zookeeper-3.4.6
export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:REDISZ-HOM
# 保存,并刷新环境变

官网地址:https://zookeeper.apache.org

1. 特性

  1. 顺序一致性-来自客户端的更新将按照发送的顺序应用
  2. 原子性-更新成功或失败。没有部分结果
  3. 单个系统映像-无论客户端连接到哪个服务器,客户端都将看到相同的服务视图。也就是说,即使客户端故障转移到具有相同会话的其他服务器,客户端也永远不会看到系统的较旧视图。
  4. 可靠性-应用更新后,此更新将一直持续到客户端覆盖更新为止。
  5. 及时性-确保系统的客户视图在特定时间范围内是最新的。

2. 角色

  1. leader
  2. follower
  3. observer

3. 节点(zookeeper 对每一个连接都会产生一个session)

  1. 临时节点
  2. 持久节点
  3. 序列化节点

4.配置文件讲解(原来配置文件zoo_sample.conf)

# The number of milliseconds of each tick
tickTime=2000 # 心跳时间
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10  # 从节点追随主节点,允许的次数
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5 # 主从数据同步的时候的次数
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/tmp/zookeeper   # 持久化目录,这个写什么就是先在服务器上创建好
# the port at which the clients will connect
clientPort=2181  # 客户端连接zookeeper时的端口号
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1

## Metrics Providers
#
# https://prometheus.io Metrics Exporter
#metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
#metricsProvider.httpPort=7000
#metricsProvider.exportJvmInfo=true
## 下边的配置是zookeeper 集群的配置
# 根据下边的行数/2+1(过半数) 来决定选主
# 2888 是 主节点 同步数据用的
# 3888 是 服务间通信选主使用的
#server.1 这里的1、2、3、4需要在刚才的dataDir目录中创建myid文件,并将服务号写在该文件中
server.1=192.168.106.11:2888:3888  
server.2=192.168.106.12:2888:3888
server.3=192.168.106.13:2888:3888
server.4=192.168.106.14:2888:3888

下边是我13机器上的myid 文件内容,要在每一台机器上都配置,但是服务号不一样,请按照配置文件上的服务号,依次配置
在这里插入图片描述

服务号比较大的就是leader

5.命令详情

配置好zookeeper 的环境变量后,就可以启动了

在192.168.106.11 ~~192.168.106.14的节点上依次执行

# 前台启动,日志会输出在屏幕上,默认为后台启动,这里只作为演示
zkServer.sh start-foreground

查看主从状态,这里就不贴图了

#查看主从状态
zkServer.sh status 
# 会发现在13的机器上 为leader,其余机器为follower,因为13的myid 值配置的比较大,(启动了11、12、和13 的时候,就可以选主了,在启动完了14 ,14会追对leader)

客户端命令

# 在任何一台服务器上,输入如下命令,会连接本服务器的服务端
zkCli.sh 
# 保存数据,
create /abc "abcd"
# 获取数据 get /abc
"abc"

服务器会展示一下数据
在这里插入图片描述

因为我这里之前做了别的操作,元数据可能有些乱,不要紧,慢慢来

下边介绍一下后边的元数据

#创建的事物id,一共为64位表示,2表示主是第几个纪元,我这里之前手动模拟主挂了一次,自动选择了新的主,所以是2打头(切换了几次leader 就是几打头),末尾的04表示这是第四次操作,客户端的连接和注销也会开启一个事物id
cZxid = 0x200000004
# 创建时间
#ctime = Wed Feb 03 20:43:26 CST 2021
# 修改的事物id,
mZxid = 0x200000004
#修改时间
mtime = Wed Feb 03 20:43:26 CST 2021
# 父节点的事物id
pZxid = 0x200000004
#临时节点所属sessionId,因为这里我创建的是持久节点,所以没有信息
ephemeralOwner = 0x0

创建临时节点

create -e /aaa "aaa"
#在获取该临时节点数据
get /aa

在这里插入图片描述

​ 其中ephemeralOwner 就是这个临时节点的所属sessionId

创建序列节点

create -s /bbb "bbb"
#控制台输出

在这里插入图片描述

这里返回的可能和我们想象的不是也能一样,因为zookeeper 会帮我们统一命名,就是多台机器,同时创建指定的节点数据的时候,也不会报错

6.zookeeper作用

  1. 统一配置管理
  2. 分组管理(path 结构)
  3. 统一命名 (sequience 节点-序列节点)
  4. 同步(临时节点)—进阶使用(分布式锁)—>再次进阶(依托父节点且具备 -s (临时节点)代表父节点可以创建多把锁)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值