Zookeeper入门

一、Zookeeper简介及安装

1、Zookeeper简介

ZooKeeper 是 Apache 软件基金会的一个软件项目,它为大型分布式计算提供开源的分布式配置服务、同步服务和命名注册。

ZooKeeper 的架构通过冗余服务实现高可用性。

Zookeeper 的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。

一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。

2、数据结构

ZooKeeper 数据模型的结构与 Unix 文件系统很类似,整体上可以看作是一棵树,每个节点称做一个 ZNode。每一个 ZNode 默认能够存储 1MB 的数据,zookeeper 名称空间中的每个节点都是由一个路径标识

image

3、Zookeeper安装

zookeeper 下载地址为: https://zookeeper.apache.org/releases.html

image

以3.5.7为例,下载安装

3.1 安装jdk

Linux中安装JDK

3.2 上传文件解压

image

#解压到/opt/module/目录中
tar -zxvf apache-zookeeper-3.5.7- bin.tar.gz -C /opt/module/

#修改名称
mv apache-zookeeper-3.5.7 -bin/ zookeeper-3.5.7
3.3 修改配置
#将/opt/module/zookeeper-3.5.7/conf 这个路径下的 zoo_sample.cfg 修改为zoo.cfg
mv zoo_sample.cfg zoo.cfg

#打开zoo.cfg 文件,修改 dataDir 路径
vim zoo.cfg

#创建zkData目录
mkdir zkData
#zoo.cfg文件中修改位置
dataDir=/opt/module/zookeeper-3.5.7/zkData
3.4 测试
cd /opt/module/zookeeper-3.5.7
  • 启动服务
bin/zkServer.sh start
  • 查看状态
bin/zkServer.sh status
  • 启动客户端
zookeeper-3.5.7]$ bin/zkCli.sh
  • 退出客户端
    输入quit命令即可

  • 停止服务

bin/zkServer.sh stop

二、客户端常用命令

基本语法 功能描述
help 显示所有操作命令
ls path 使用 ls 命令来查看当前 znode 的子节点 [可监听]
-w 监听子节点变化
-s 附加次级信息
create 普通创建
-s 含有序列
-e 临时(重启或者超时消失)
get path 获得节点的值 [可监听]
-w 监听节点内容变化
-s 附加次级信息
set 设置节点的具体值
stat 查看节点状态
delete 删除节点
deleteall 递归删除节点

三、Zookeeper选举机制

okeeper 的 leader 选举存在两个阶段,一个是服务器启动时 leader 选举,另一个是运行过程中 leader 服务器宕机。在分析选举原理前,先介绍几个重要的参数。

  • 服务器 ID(myid):编号越大在选举算法中权重越大

  • 事务 ID(zxid):值越大说明数据越新,权重越大

  • 逻辑时钟(epoch-logicalclock):同一轮投票过程中的逻辑时钟值是相同的,每投完一次值会增加

  • 选举状态:
    LOOKING: 竞选状态
    FOLLOWING: 随从状态,同步 leader 状态,参与投票
    OBSERVING: 观察状态,同步 leader 状态,不参与投票
    LEADING: 领导者状态

  • Zookeeper第一次启动时选举
    image

  • Zookeeper运行过程中 loader 服务器当季时选举
    image

本文作者:香酥豆腐皮

本文链接:https://www.cnblogs.com/Snowclod/p/16903672.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   香酥豆腐皮  阅读(37)  评论(0编辑  收藏  举报
月落乌啼霜满天,江枫渔火对愁眠。
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 青石巷 REOL
青石巷 - REOL
00:00 / 00:00
An audio error has occurred.