zookeeper的结束安装和使用

分布式协调服务

官方学习文档:https://zookeeper.apache.org/doc/current/zookeeperOver.html

模型

zookeeper和redis相似 在此模型中 增删改查里的读写,其中写操作只能在leader中,查询操作在其他节点都可以。

强调:不要把zookeeper当作数据库(虽然可以用)

性能

ZooKeeper很快。在“读取为主”的工作负载中,它特别快。ZooKeeper应用程序可在数千台计算机上运行,并且在读取比写入更常见的情况下,其性能最佳,比率约为10:1。

可靠性

追随者(follower) 领导者(leader)

  1. 追随者的失败和恢复
  2. 失败和其他追随者的恢复
  3. 领导者的失败
  4. 两个追随者的失败和恢复
  5. 另一个领导者的失败

保证

​ ZooKeeper非常快速且非常简单。但是,由于其目标是作为构建更复杂的服务(例如同步)的基础,因此它提供了一组保证。这些是:

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

简单的API

  • create:在树中的某个位置创建一个节点
  • delete:删除节点
  • 存在:测试某个节点是否存在于某个位置
  • 获取数据:从节点读取数据
  • 设置数据:将数据写入节点
  • 获取子节点:检索节点的子节点列表
  • sync:等待数据传播

结构

目录树结构,node可以存储数据,单个节点存储的最大数据为1mb,节点可以分为几种,持久节点,临时节点(依赖session),序列节点(概念)

zookeeper的安装

首先先检查当前主机有无Java的JDK

jps

如果没有 先安装jdk

yum install java-1.8.0-openjdk-devel.x86_64

安装完成后 新建一个目录 下载zookeeper文件

版本下载地址:https://zookeeper.apache.org/releases.html#download

复制HTTP下的里链接 再到主机里面wget

#先进入到local目录
cd /usr/local
#在此目录下载zookeeper文件
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.6.1/apache-zookeeper-3.6.1-bin.tar.gz
#解压
tar xf apache-zookeeper-3.6.1-bin.tar.gz
#进入文件
cd apache-zookeeper-3.6.1-bin
#进入conf目录
cd conf
#将zoom_simple.cfg文件复制
 cp  zoo_sample.cfg  zoo.cfg
#编辑
vim zoo.cog
#修改内容
dataDir=/tmp/zookeeper/data
dataLogDir=/tmp/zookeeper/log

#注意:如果想配置集群的话,请在clientPort下面添加服务器的ip。如

server.1=192.168.180.132:2888:3888
server.2=192.168.180.133:2888:3888
server.3=192.168.180.134:2888:3888


在tmp目录创建目录

mkdir /tmp/zookeeper
mkdir /tmp/zookeeper/data
mkdir /tmp/zookeeper/log
#如果配置集群  在data目录下 加一个myid
cd data 
vim myid
#对应上面的server 是几就在里面写个几

配置环境变量

[root@iZ2ze0pget2kz9uogwgylfZ apache-zookeeper-3.6.1-bin]# export ZOOKEEPER_INSTALL=/usr/local/apache-zookeeper-3.6.1-bin/

[root@iZ2ze0pget2kz9uogwgylfZ apache-zookeeper-3.6.1-bin]# export PATH=$PATH:$ZOOKEEPER_INSTALL/bin

启动zookeeper(必须进入bin 目录)

[root@iZ2ze0pget2kz9uogwgylfZ apache-zookeeper-3.6.1-bin]# cd bin

#启动
[root@iZ2ze0pget2kz9uogwgylfZ bin]# ./zkServer.sh start
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /usr/local/apache-zookeeper-3.6.1-bin/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

#停止
[root@iZ2ze0pget2kz9uogwgylfZ bin]# ./zkServer.sh stop
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /usr/local/apache-zookeeper-3.6.1-bin/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED

#help一些其他命令
[root@iZ2ze0pget2kz9uogwgylfZ bin]# ./zkServer.sh help
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /usr/local/apache-zookeeper-3.6.1-bin/bin/../conf/zoo.cfg
Usage: ./zkServer.sh [--config <conf-dir>] {start|start-foreground|stop|version|restart|status|print-cmd}

zookeeper的使用

#通过 ./zkCli.sh命令 进入zookeeper
./zkCli.sh
#出现下面这样就代表可以使用了
[zk: localhost:2181(CONNECTED) 0] 


#创建节点和创建子节点 及获取节点内容
[zk: localhost:2181(CONNECTED) 0] create /zk-test 123
Created /zk-test

[zk: localhost:2181(CONNECTED) 1] create  /zk-test/book  233
Created /zk-test/book

[zk: localhost:2181(CONNECTED) 2] get /zk-test
123

#节点内容的覆盖 (set)
[zk: localhost:2181(CONNECTED) 6] set /zk-test 456

[zk: localhost:2181(CONNECTED) 7] get /zk-test
456


#删除节点

#若当前节点含有子节点  则无法删除
[zk: localhost:2181(CONNECTED) 8] delete /zk-test
Node not empty: /zk-test

#删除子节点
[zk: localhost:2181(CONNECTED) 4] delete /zk-test/book

#删除了子节点之后就可以删除当前的test了
[zk: localhost:2181(CONNECTED) 4] delete /zk-test

原文地址:https://www.cnblogs.com/beizhai/p/13859380.html