zookeeper-1.zookeeper介绍、安装、shell cli 使用,基本概念验证

zookeeper

文档:https://zookeeper.apache.org/doc/current/zookeeperOver.html

什么是zookeeper

在这里插入图片描述
这里有兄弟会想,什么是原语,原语指的就是他开放出来的API
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这个没有Linux文件夹那种概念,他这里是按节点和临时节点

zookeeper两种状态

  1. 可用状态
  2. 不可用状态-leader挂掉,不可用状态恢复到可用状态越快越好
    在这里插入图片描述

穿插一下,zookeeper锁的概念是会在客户端存在一个session概念,如果锁存在就持有锁,如果消失就立马释放,不过!redis 里面有redission 锁已经实现类似概念,就连kafka 新版里面也在脱离zookeeper 集群管理

在这里插入图片描述
这个时候zookeeper 吞吐量能达到4W以上

在这里插入图片描述
在这里插入图片描述

这里的及时性说的是最终一致性的概念

安装zookeeper

zookeeper安装地址: https://zookeeper.apache.org/releases.html

[root@admin apache-zookeeper-3.6.3-bin]# cd conf/
[root@admin conf]# ll
total 12
-rw-r--r--. 1 vmuser vmuser  535 Apr  9  2021 configuration.xsl
-rw-r--r--. 1 vmuser vmuser 3435 Apr  9  2021 log4j.properties
-rw-r--r--. 1 vmuser vmuser 1148 Apr  9  2021 zoo_sample.cfg
[root@admin conf]# cp zoo_sample.cfg zoo.cfg
[root@admin conf]# ll
total 16
-rw-r--r--. 1 vmuser vmuser  535 Apr  9  2021 configuration.xsl
-rw-r--r--. 1 vmuser vmuser 3435 Apr  9  2021 log4j.properties
-rw-r--r--. 1 root   root   1148 Feb 28 11:16 zoo.cfg
-rw-r--r--. 1 vmuser vmuser 1148 Apr  9  2021 zoo_sample.cfg

zookeeper 默认启动的文件是zoo.cfg。所以我cp了一下

ticktime Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。tickTime以毫秒为单位。
tickTime:该参数用来定义心跳的间隔时间,zookeeper的客户端和服务端之间也有和web开发里类似的session的概念,而zookeeper里最小的session过期时间就是tickTime的两倍。

initLimit - 集群中的follower服务器(F)与leader服务器(L)之间 初始连接 时能容忍的最多心跳数
此配置表示,允许 follower (相对于 leader 而言的“客户端”)连接 并同步到 leader 的初始化连接时间,它以 tickTime 的倍数来表示。当超过设置倍数的 tickTime 时间,则连接失败。

syncLimit - 集群中的follower服务器(F)与leader服务器(L)之间 请求和应答 之间能容忍的最多心跳数(tickTime的数量)。此配置表示, leader 与 follower 之间发送消息,请求 和 应答 时间长度。如果 follower 在设置的时间内不能与leader 进行通信,那么此 follower 将被丢弃。

initLimit
参数设定了允许所有跟随者与领导者进行连接并同步的时间,如果在设定的时间段内,半数以上的跟随者未能完成同步,领导者便会宣布放弃领导地位,进行另一次的领导选举。如果zk集群环境数量确实很大,同步数据的时间会变长,因此这种情况下可以适当调大该参数。默认为10
syncLimit
参数设定了允许一个跟随者与一个领导者进行同步的时间,如果在设定的时间段内,跟随者未完成同步,它将会被集群丢弃。所有关联到这个跟随者的客户端将连接到另外一个跟随着。

dataDir 存放zk 日志快照

maxClientCnxns=60 允许最大连接数

在这里插入图片描述

新增端口,人为把端口都写进来,zookeeper要有过半数!

     1      2    3     4                 
server.1=node01:28888:38888
server.2=node02:28888:38888
server.3=node03:28888:38888
server.4=node04:28888:38888

1-server.* 这个谁最大谁就是leader,也有可能是3 过半最大的就行
4-38888 代表这leader挂掉或者初次没有lead的时候投票建立链接通信,选出leader,leader启动一个28888接口,然后其他端口去选28888 的链接

在 /temp/zookeeper 文件夹下面新增文件myid
内容写上1就可以了

1

然后我们在其余3台服务器上部署zookeeper,但是,每个myid是不同的。1234这样子

将zk 的启动命令键放入配置文件中,这样子任何一个地方都可以访问

vim /etc/profile
export ZOOKEEPER_HOME=/home/vmuser/apache-zookeeper-3.6.3-bin
export PATH=$PATH:${JAVA_HOME}/bin:${ZOOKEEPER_HOME}/bin
重启 source 也可以
 . /etc/profile

将文件复制给其他服务器

scp /etc/profile  root@192.168.1.42:/etc

start-foreground 前台日志启动,几台机器逐一启动

[root@localhost etc]# zkServer.sh -help
/bin/java
ZooKeeper JMX enabled by default
Using config: /home/vmuser/apache-zookeeper-3.6.3-bin/bin/../conf/zoo.cfg
Usage: /home/vmuser/apache-zookeeper-3.6.3-bin/bin/zkServer.sh [--config <conf-dir>] {start|start-foreground|stop|version|restart|status|print-cmd}
[root@localhost conf]  zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /home/vmuser/apache-zookeeper-3.6.3-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: leader

在这里插入图片描述
登入客户端

[root@localhost vmuser]# zkCli.sh
[zk: localhost:2181(CONNECTED) 4] ls /
[zookeeper]
              创建节点
[zk: localhost:2181(CONNECTED) 5] create /ooxx ""
Created /ooxx
[zk: localhost:2181(CONNECTED) 6] ls /
[ooxx, zookeeper]
[zk: localhost:2181(CONNECTED) 7] create /ooxx/xxoo ""
Created /ooxx/xxoo
[zk: localhost:2181(CONNECTED) 8] ls /ooxx
[xxoo]
[zk: localhost:2181(CONNECTED) 9] get /ooxx/xxoo
[zk: localhost:2181(CONNECTED) 10] set /ooxx i
             这个里面的数据只能创建 1M,这里面也是二进制安全的
[zk: localhost:2181(CONNECTED) 12] get -s /ooxx
i
# 创建节点,事务id,c创建
# 64位,前32位“0x2” leader纪元;后32位“00000053”,事务序号 
# 在1纪元,创建节点,事务序号2
cZxid = 0x100000002
# 创建时间
ctime = Mon Feb 28 14:18:20 CST 2022
# 修改节点,事务id,m修改
# 在5纪元,修改节点,事务序号12
mZxid = 0x100000004
# 修改时间
mtime = Mon Feb 28 14:20:50 CST 2022
当前节点下创建最后节点的id号
pZxid = 0x100000003
cversion = 1
# 数据版本
dataVersion = 1
aclVersion = 0
#临时的意思
ephemeralOwner = 0x0
# 数据长度
dataLength = 1
numChildren = 1

当前的session id

在这里插入图片描述

[zk: localhost:2181(CONNECTED) 5] create -e /xoxo "sdfafas"$<2>
Created /xoxo
[zk: localhost:2181(CONNECTED) 8] get -s /xoxo
sdfafas
cZxid = 0x100000007
ctime = Mon Feb 28 14:53:37 CST 2022
mZxid = 0x100000007
mtime = Mon Feb 28 14:53:37 CST 2022
pZxid = 0x100000007
cversion = 0
dataVersion = 0
aclVersion = 0
  
ephemeralOwner = 0x40d13a5d15e0001
dataLength = 7
numChildren = 0

去另外一台服务器登录

在这里插入图片描述

[zk: localhost:2181(CONNECTED) 0] get -e /xoxo
org.apache.commons.cli.UnrecognizedOptionException: Unrecognized option: -e
[zk: localhost:2181(CONNECTED) 1] get -s /xoxo
sdfafas
cZxid = 0x100000007
ctime = Mon Feb 28 14:53:37 CST 2022
mZxid = 0x100000007
mtime = Mon Feb 28 14:53:37 CST 2022
pZxid = 0x100000007
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x40d13a5d15e0001
dataLength = 7
numChildren = 0

在刚才添加的那台机器 quit退出,在回到第二次登录机器,就可以看到 /xoxo 没有了
也可以使用close

在这里插入图片描述

13888 是选主投票用的
12888 leader请求接收write 请求

在这里插入图片描述

为什么需要zookeeper

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值