Zookeeper学习

Posted djanfey

tags:

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

一、工作机制

  zookeeper是一个基于观察者模式的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据发生变化,Zookeeper就负责通知已经在zookeeper上注册的那些观察者做出相应的反应。

  zookeeper=文件系统+通知机制

二、特点

  1. zookeeper一个领导者,多个跟随者组成的集群。

  2. 集群中只要有半数以上的节点存活,zookeeper就能正常服务。

  3. 全局数据一致:每个Server保存一份相同的数据副本,client无论连接哪个Server,数据都是一致的。

  4. 更新请求顺序执行,来自同一个client的更新请求按其发送顺序依次执行。

  5. 实时性,在一定时间范围内,client能读到最新数据。

  6. 数据更新原子性,要么成功,要么失败。

三、 数据结构

  1. zookeeper数据结构可以看做一棵树,每个节点称作一个znode。每个znode默认能够给存储1mb数据,每个znode都可以通过其路径唯一标识。

四、 应用场景

  1. 统一命名服务

  2. 统一配置文件

  3. 统一集群管理

  4. 服务器动态上下线

  5. 软负载均衡

五、zookeeper安装

  A. 准备

    1. 安装jdk

    2. 拷贝zookeeper安装包到linux下

    3. 解压到指定目录

  B、修改配置 

    1. 进入解压目录下conf目录,创建zoo.cfg文件

    2. 修改dataDir路径为解压目录+zkData

    3. 在解压目录下创建zkData

  C、启动

    1. 启动服务器 :bin/zkServer.sh start

    2. 停止服务器: bin/zkServer.sh stop

    3. 查看服务器状态:bin/zkServer.sh status

    4. 启动客户端:bin/zkCli.sh

    5. 关闭客户端: quit

六、配置文件解析

  1. tickTime=2000 心跳间隔为2s

  2. initLimit=10 心跳帧为10帧

  3. syncLimit=5 同步帧为5帧

  4. clientPort=2181 客户端的端口号为2181

七、内部原理

  A、选举机制

    1. 半数机制

      集群中半数以上机器存活,集群可用。所以zookeeper适合安装在奇数台服务器上。

    2. zookeeper虽然没有指定master和Slave,但是工作时有一个节点为leader,其它为follower,leader是通过内部产生的 

    3. 选举机制 

      每个节点创建先投票自己,如果不能称为leader,将票数转给id大的。

八、节点类型

  A、持久:客户端和服务端断开连接后,创建的节点不删除。

    1.持久化目录节点

    2. 持久化顺序编号目录节点

      客户端与zookeeper断开连接后,该节点依旧存在,只是zookeeper给该节点名称进行顺序编号

  B、短暂:客户端和服务端断开连接后,创建的节点自己删除。

    1.临时目录节点

    2. 临时顺序编号目录节点

九、实战

  A、分布式安装部署

    1.在每台服务器上安装zookeeper

    2. 配置服务器编号

      在解压目录下zkData创建一个myid文件,编写编号

    3. 修改配置文件

      添加集群:server.A=B:C:D

      A:是一个数字,代表第几号服务器(myid里的值)

      B:这个服务器的IP地址

      C:这个服务器与集群中的leader服务器交换信息的端口(2888)

      D:万一集群中的leader服务器挂了,需要一个端口来重新进行选举,选出一个新的leader,而这个端口就是用来执行选举时服务器相互通信的端口(3888)

    4. 分别启动zookeeper并查看状态

  B、客户端命令行操作

    1. help:显示所有操作命令

    2. ls path [watch] 使用ls命令来查看当前znode中所包含的内容

    3. ls2 path [watch] 查看当前节点数据并能看到更新次数等数据

    4. create 普通创建 -s 含有序列 -e 临时(重启或者超时消失)

    5. get path [watch] 获得节点的值

    6. set 设置节点的具体的值

    7. stat 查看节点状态

    8. delete 删除节点

    9. rmr 递归删除节点 

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

学习zookeeper—基础

学习 - Zookeeper

Mycat学习实战-Mycat的zookeeper集群模式

zookeeper 学习 zookeeper下载部署

ZooKeeper学习第二期--ZooKeeper安装配置

zookeeper学习笔记