新手zookeeper核心指南

  • 1.功能
  • 2.特点
  • 3.结构数据
  • 4.简单使用
  • 5.选举机制
  • 6.监听器原理
  • 7.client像zookeeper写数据流程

一 功能

1:文件系统,存储数据
2:通知,当数据发生变化,zookeeper集群会通知订阅的单位

二 特点

1:角色:leader和follower
2:leader进行投票,更新系统状态
3:follower接收客户端的请求,干活的打工仔
4:leader和follower的角色不是固定的,
5:半数以上机器存活才能正常运行,因此一般设置集群数量为奇数
6:全局数据一致,每个server保存的数据一致
7:更新请求顺序执行,来自同一个client的更新请求顺序执行
8:数据更新原子性:一次数据更新要么成功,要么失败

三 数据结构

在这里插入图片描述

每一个节点都叫做znode,数据存储在节点上,每个节点都能存储数据

节点分类:
短暂(ephemeral):客户端断开连接后创建的节点删除
持久(persistent):客户端断开连接后创建的节点保留
有编号:zookeeper给节点进行顺序
无编号:没有进行编号

两两组合:短暂有序,短暂无序,持久有序,持久无序

四 简单使用

启动

bin/zkServer.sh start

启动后使用jps命令能查看到QuorumPeerMain在运行,但这不代表集群启动,需要启动半数以上的设置的server

检查集群启动

bin/zkServer.sh status

启动出错查日志文件,名称zookeeper.out
存在位置启动地点文件夹
(如果bin/zkServver.sh start启动就存在和bin的父级中也就是和bin同级,./zkServver.sh start启动就存在于bin里面)

登录集群

bin/zkCli.sh

查看节点(登录后功能)

ls /
ls /znode
ls /znode/node

创建节点(登陆后功能)

默认节点为永久无序 
create /znode  节点数据               -----创建普通节点   
create -s /znode 节点数据             -----创建有序节点
create -e /znode 节点数据             -----创建临时节点
create -e -s /znode 节点数据          -----创建临时有序节点
                                     -----不能多级创建

查看节点存储数据(登陆后功能)

get /node

更改节点存储数据(登陆后功能)

set /node  新的数据

查看节点状态数据(登陆后功能)

stat /znode 
通过里面的ephemeralOwer参数查看节点是不是永久,永久节点值为0

创建监听器,监听节点数目(登陆后功能)

ls /znode watch       //监听器是一次性的,需要重复注册

创建监听器,监听节点数据(登陆后功能)

get /znode watch     //监听器是一次性的,需要重复注册

删除节点(登陆后功能)

rmr /znode          //递归删除节点,即使节点里含有其它节点

五 选举机制

在这里插入图片描述

server启动半数以上集群才会正常启动,这时候才有leader和worker

leader和worker选举机制:
1号启动,得票1,没有半数以上的票,进入观望状态
2号启动,得票1,2,编号小的选举编号大的,没有配置server的半数以上,进入观望状态
3号启动,得票1,2,3 半数以上,成为leader,zookeeper启动,1,2成为worker
4,5号启动,已有leader,成为worker
leader和worker不是固定的,当leader挂了,检测zookeeper集群,存在半数以上则选举编号大的成为新的leader

六 监听器原理

在这里插入图片描述

主线程创建zkClient,通过zkCLient自己的connect打开和zookeeper的连接,连接后告诉集群需要监听的地址,当监听地址内容发生改变就会告诉zkClient的Listener,然后调用我们自己定义内容的process方法

七 client向zookeeper写数据的流程

在这里插入图片描述

客户端发送请求给集群的某一个server
server不是leader就将信息转发给leader
leader发送信息给所有server进行投票决定做还是不做
server将各自投票结果给leader
leader通过投票结果进行决策,将决定告诉给每一个server有没有帮客户端写数据
server通知客户端

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值