zookeeper简介

zookeeper是什么

ZooKeeper本质上是一个分布式的小文件存储系统。提供基于类似于文件系统的目录树方式的数据存储,并且可以对树中的节点进行有效管理。从而用来维护和监控你存储的数据的状态变化。通过监控这些数据状态的变化,从而可以达到基于数据的集群管理。

zookeeper的特点

1.全局数据一致:集群中每个服务器保存一份相同的数据副本,client无论连接到哪个服务器,展示的数据都是一致的,这是最重要的特征;
2.可靠性:如果消息被其中一台服务器接受,那么将被所有的服务器接受。
3.顺序性:全局有序是指如果在一台服务器上消息a在消息b前发布,则在所有Server上消息a都将在消息b前被发布。
4.数据更新原子性:一次数据更新要么成功(半数以上节点成功),要么失败,不存在中间状态;
5.实时性:Zookeeper保证客户端将在一个时间间隔范围内获得服务器的更新信息,或者服务器失效的信息。

zookeeper的角色

Leader: master 领导者、管理者

		处理事务形操作(增、删、改)

Follower:Slave 服从者、工作者

		处理非事务操作(查询)
		转发事务形操作给leader
		参与选举

Observer 观察者

		处理非事务操作(查询)
		转发事务形操作给leader

LookIng 竞选状态

ZooKeeper集群搭建

集群搭建:参见zookeeper安装步骤

ZooKeeper shell

节点操作必须使用绝对路径
一、创建
Create [-s 序列] [-e 临时节点] 路径 数据
Create -e /dashuju12 dashuju12
二、修改
Set 路径 数据
Set /dashuju12 dashuju1234
三、查询
Ls /dashuju12 查看子节点
Ls2 /dashuju12 查看子节点和本节点详细信息
Get /dashuju12 获得本节点数据和详细信息
四、删除
Delete 删除一个节点
Rmr 删除包含子节点的节点

Zookeeper节点类型

临时节点:会话结束,节点消失,不能有子节点
永久节点:和会话没有关系,可以有子节点
序列节点:在给定的文件名后追加序列号(序列号依次递增)

状态:
PERSISTENT:永久节点
EPHEMERAL:临时节点
PERSISTENT_SEQUENTIAL:永久节点、序列化
EPHEMERAL_SEQUENTIAL:临时节点、序列化

zookeeper属性

hello world 为节点数据信息

cZxid 节点创建时的zxid

ctime 节点创建时间

mZxid 节点最近一次更新时的zxid

mtime 节点最近一次更新的时间

cversion 子节点数据更新次数

dataVersion 本节点数据更新次数

aclVersion 节点ACL(授权信息)的更新次数

ephemeralOwner 如果该节点为临时节点,ephemeralOwner值表示与该节点绑定的session id. 如果该节点不是临时节点,ephemeralOwner值为0

dataLength 节点数据长度,本例中为hello world的长度

numChildren 子节点个数

ZooKeeper Watcher(监听者)

ZooKeeper提供了分布式数据发布/订阅功能,一个典型的发布/订阅模型系统定义了一种一对多的订阅关系,能让多个订阅者同时监听某一个主题对象,当这个主题对象自身状态变化时,会通知所有订阅者,使他们能够做出相应的处理。

ZooKeeper中,引入了Watcher机制来实现这种分布式的通知功能。ZooKeeper允许客户端向服务端注册一个Watcher监听,当服务端的一些事件触发了这个Watcher,那么就会向指定客户端发送一个事件通知来实现分布式的通知功能。

触发事件种类很多,如:节点创建,节点删除,节点改变,子节点改变等。
总的来说可以概括Watcher为以下三个过程:客户端向服务端注册Watcher、服务端事件发生触发Watcher、客户端回调Watcher得到触发事件情况
Watch机制特点

一次性触发

事件发生触发监听,一个watcher event就会被发送到设置监听的客户端,这种效果是一次性的,后续再次发生同样的事件,不会再次触发。

事件封装

ZooKeeper使用WatchedEvent对象来封装服务端事件并传递。
WatchedEvent包含了每一个事件的三个基本属性:
通知状态(keeperState),事件类型(EventType)和节点路径(path)

event异步发送

watcher的通知事件从服务端发送到客户端是异步的。

先注册再触发

Zookeeper中的watch机制,必须客户端先去服务端注册监听,这样事件发送才会触发监听,通知给客户端。
在这里插入图片描述

IDEA 创建zookeeper项目

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魔界小皮蛋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值