zookeeper

Posted hikoukay

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zookeeper相关的知识,希望对你有一定的参考价值。

一,前言

与redis的联系

redis 单实例,数据在内存-读取快

鉴于雪崩击穿等问题 ->复制到集群 HA sentinel 哨兵实现高可用

不是绝对的实时同步,可能连最终一致性都算不上

集群模式 分片

完成分布式 协调分布式锁

二,zookeeper(不要把zk当做数据库用)

主从集群 主是单点的(zk运行状态,1.可用状态,有主模型2.不可用状态,无主模型3.不可用状态恢复到可用状态,应该越快越好 200毫秒)

1.leader可能会挂

2.导致服务不可用

3.事实,zk集群及高可用

4.如果有一种方式可以快速的复制出一个leader

一个leader多个follower,客户端想连谁就连谁(每个客户端连接会有一个session,即临时节点)

zookeeper是一个目录结构-->不同目录即为一个节点,可以存数据,官方声明为1M->统一配置管理1.2.3.4.

持久节点

临时节点-->session

序列节点(序列化,要么是持久节点要么是临时节点)

1.统一配置管理<-1M数据

  分布式锁,临时节点

client代码实现

 

2.分组管理<--path结构

        

锁依托一个父节点,具备 -s

队列式事务锁

3.统一命名<--sequential

 

代表父节点下可以有多把锁

 

4.同步<--临时节点

HA 选主

 

 

 

 

 

担保

  • ZooKeeper非常快速且非常简单。但是,由于其目标是作为构建更复杂的服务(例如同步)的基础,因此它提供了一组保证。这些是:
  • 顺序一致性-来自客户端的更新将按照其发送顺序进行应用。
  • 原子性-更新成功或失败。没有部分结果。
  • 统一视图-无论客户端连接到哪个服务器,客户端都将看到相同的服务视图。
  • 可靠性-应用更新后,此更新将一直持续到客户端覆盖更新为止。
  • 及时性-确保系统的客户视图在特定时间范围内是最新的。

三 安装启动

  • 1.先安装jdk (下载,解压,配置环境变量)

export JAVA_HOME=/app/jdk1.8.0_231/

export CLASSPATH=.:$JAVA_HOME/lib.dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$PATH:$JAVA_HOME/bin

Java-version验证是否安装成功

  • 2.再zookeeper(下载,解压,配置环境变量)

export JAVA_HOME=/app/jdk1.8.0_231/

export CLASSPATH=.:$JAVA_HOME/lib.dt.jar:$JAVA_HOME/lib/tools.jar

export ZOOKEEPER_HOME=/app/zookeeper/apache-zookeeper-3.5.5-bin/

export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin

输入zk按tab键验证是否成功

 

配置zk相关配置:

conf/zoo.cfg

#配置数据文件夹和日志文件夹

dataDir=/var/houkai/zk

dataLogDir=/var/houkai/zk/log

#配置集群  2888: leader接收writer请求用  3888:选主投票用

server.1=192.168.65.10:2888:3888

server.2=192.168.65.20:2888:3888

server.3=192.168.65.30:2888:3888

server.4=192.168.65.40:2888:3888

server.5=192.168.65.50:2888:3888

 

mkdir -p /var/houkai/zk

进入/var/houkai/zk文件夹

vi myid 文件中写自己的id号,即上面的.1.2.3.4.5

  • 3.启动
    • zkServer.sh help 查看帮助
    • zkServer.sh start-foreground
    • java.net.NoRouteToHostException: No route to host (Host unreachable)

  service iptables status 查看防火墙状态

  service iptables off

  service iptables stop 即时生效,重启后复原

chkconfig iptables off 永久关闭防火墙

  • zkServer.sh status 查看主机状态是主还是从
  • zkCli.sh 启动客户端
    • o ll显示节点
    • o create /newnode "" 创建新的(持久)节点,东西的话不报错但是不创建,所以带个字符串
    • o create -s /newnode  创建(顺序)节点,可以规避节点被覆盖
    • o create -e /newnode   创建(临时)节点
    • o create [-s] [-e] path data acl 其中,-s或-e分别指定节点特性,顺序或临时节点,若不指定,则表示持久节点;acl用来进行权限控制。

 

  • create -s -e /newnode
  • create/newnode/sonnode "koukay" 也可以创建多级节点,数据最大1M,二进制安全的
  • get /newnode/sonnode 获取节点 因为节点相当于文件夹,所以名字前必须带/
  • get -s /koukay 获取节点,显示数据参数
  • set /newnode "hello"为节点设置值
  • rmr /test 删除节点及数据

 

 

 

netstat -napt |egrep ‘(2888|3888)‘

 

以上是关于zookeeper的主要内容,如果未能解决你的问题,请参考以下文章

zookeeperzookeeper 选举 源码解读

zookeeperzookeeper 源码解读

zookeeperzookeeper 应用场景 解密

zookeeperzookeeper 的监听机制

zookeeperzookeeper的ACL权限控制

zookeeperzookeeper源码 zookeeperz中Kerberos认证流程