bingmous

欢迎交流,不吝赐教~

导航

Zookeeper学习笔记(整理)

第1章 ZooKeeper入门

  • Zookeeper 是一个开源的分布式的,为分布式应用提供协调服务的Apache 项目。ZooKeeper=文件系统+通知机制

第2章 ZooKeeper安装

  • 安装jdk
  • 解压ZooKeeper
  • 配置修改:
    • 修改/opt/module/zookeeper-3.4.10/conf 这个路径下的zoo_sample.cfg 修改为zoo.cfg
    • 打开zoo.cfg 文件,修改dataDir 路径dataDir=/opt/module/zookeeper-3.4.10/zkData
    • 在/opt/module/zookeeper-3.4.10/这个目录上创建zkData 文件夹
  • 分布式安装需要再配置:
    • zkData目录下创建myid文件,写入ZooKeeper的id
    • zoo.cfg中添加集群部署:server.A=B:C:D,A是myid,B是IP地址、C是监听端口(2888)、D是选举端口(3888)

第3章 ZooKeeper内部原理

选举机制(面试重点)

  • 半数机制:集群中半数以上机器存活,集群可用。所以Zookeeper 适合安装奇数台服务器。
  • 2)Zookeeper 虽然在配置文件中并没有指定Master 和Slave。但是,Zookeeper 工作时,是有一个节点为Leader,其他则为Follower,Leader 是通过内部的选举机制临时产生的。

节点类型

  • 持久节点,持久顺序编号节点
  • 临时节点,临时顺序编号节点

stat结构体

监听器原理(面试重点)

  1. - ZooKeeper客户端(main线程)会创建两个线程(connect,listener),一个负责连接,一个负责监听;
  2. - 通过connect将要注册的监听事件发送给ZooKeeper;
  3. - ZooKeeper将要监听的事件添加至监听列表;
  4. - ZooKeeper监听到有数据或路径变化,会将消息发送给listener线程;
  5. - listener线程内部调用process()方法

写数据流程

  1. 客户端向ZooKeeper发送写数据请求
  2. 如果这个server不是leader会把这个请求发送给leader
  3. leader将请求广播给所有ZooKeeper server
  4. server写成功后会通知leader,leader收到大多数server数据写成功了就说明数据写成功了
  5. 之后leader会通知server数据写成功了,server进一步通知客户端数据写成功了

第4章 ZooKeeper实战(开发重点)

分布式安装

  • 解压,在目录下创建zkData目录,用于存储zk数据
  • 在zkData目录下创建myid,添加2,其他节点为3、4
  • 配置conf目录下zoo.cfg
修改目录:
dataDir=/opt/module/zookeeper-3.4.10/zkData

添加:
#######################cluster##########################
server.2=localhost102:2888:3888
server.3=localhost103:2888:3888
server.4=localhost104:2888:3888
  • 分别启动:bin/zkServer.sh start,启动客户端bin/zkCli.sh

客户端命令行操作

  • help、ls path [watch]、ls2 [watch]、create [-s -e]、get path [watch] 、set、stat、delete、rmr、

API应用

  • 创建ZooKeeper客户端
  • 创建子节点
  • 获取子节点并监听节点变化
  • 判断节点是否存在

监听服务器节点动态上下线

  • 服务器在ZooKeeper上注册/servers
  • 客户端监听/servers/ + child

第5章 企业面试真题

  • 请简述ZooKeeper 的选举机制:半数选举机制
  • ZooKeeper 的监听原理是什么?:
    - ZooKeeper客户端(main线程)会创建两个线程(connect,listener),一个负责连接,一个负责监听;
    - 通过connect将要注册的监听事件发送给ZooKeeper;
    - ZooKeeper将要监听的事件添加至监听列表;
    - ZooKeeper监听到有数据或路径变化,会将消息发送给listener线程;
    - listener线程内部调用process()方法
  • ZooKeeper 的部署方式有哪几种?集群中的角色有哪些?集群最少需要几台机器?:
    - 单机模式、集群模式
    - Leader、Follower
    - 3台
  • ZooKeeper 的常用命令:ls create get delete set

 

 

 

 

posted on 2020-07-16 10:47  Bingmous  阅读(28)  评论(0编辑  收藏  举报