《快学BigData》--Zookeeper 总结(A)(21)

2023-03-06 21:13:52 浏览数 (1)

Zookeeper 总结

学习是一种浮躁的事情,要静下心来慢慢的品味。 -- 小徐

官网:http://zookeeper.apache.org/

概述

zookeeper 主要负责管理机器的正常运行,如果一台机器突然死掉,利用zookeeper的机制可以快速的启动另一台备份的机器,zookeeper在这一方面做出了杰出的贡献,底层实现的算法是fast paxos 与baxic paxos算法,当zookeeper失去太多的leader或者太多的follower时会进入回复的状态,进行选举。

ZNode用来描述ZooKeeper中的数据节点,它持有一个状态数据结构(stat),此结构中包含数据更新的版本号、访问权限(ACL)更新的版本号、时间戳。这些版本号和时间戳使ZooKeeper可以验证缓存有效性和协调更新。每当ZNode中的数据更新时,版本号都会递增。

ZooKeeper主要的职责为管理用户提交的数据,以及为用户程序提供数据节点监听服务。

角色

Zookeeper 有两种角色分别是leader 与follower (obsever), 在选举时机器超过一半即可存活,一般的机器配置成单个数

特性

1、每台机器上保存的数据一致,用户不管访问那台机器获取的数据信息都是一致的

2、分布式的读写,更细请求转发都是由leader转发的

3、数据更新原子性,一次数据的更新要不成功要不失败

4、每个节点在zookeeper中叫做znode,并且其有一个唯一的路径标识

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

6、数据更新原子性,一次数据更新要么成功(半数以上节点成功),要么失败

选举机制

那么,初始化的时候,是按照上述的说明进行选举的,但是当zookeeper运行了一段时间之后,有机器down掉,重新选举时,选举过程就相对复杂了,在选举时zookeeper有Fast Paxos与Basic Paxos算法来辅助选举,系统默认的选举算法为fast paxos。

需要加入数据version、leader id和逻辑时钟。

数据version:数据新的version就大,数据每次更新都会更新version。

Leader id:就是我们配置的myid中的值,每个机器一个。

逻辑时钟:这个值从0开始递增,每次选举对应一个值,也就是说: 如果在同一次选举中,那么这个值应该是一致的 ; 逻辑时钟值越大,说明这一次选举leader的进程更新.

选举的标准就变成:

1、逻辑时钟小的选举结果被忽略,重新投票

2、统一逻辑时钟后,数据id大的胜出

3、数据id相同的情况下,leader id大的胜出

根据这个规则选出leader。

Zookeeper 节点的类型

Zookeeper有两种节点四种模式,有持久的一临时的两种节点,持久节点(PERSISTENT)、持久顺序节点(PERSISTENT_SEQUENTIAL)、临时节点(EPHEMERAL)、临时顺序节点(EPHEMERAL_SEQUENTIAL)四种模式。

Zookeeper 权限详解

ZK的节点有5种操作权限:

CREATE、READ、WRITE、DELETE、ADMIN 也就是 增、删、改、查、管理权限,这5种权限简写为crwda(即:每个单词的首字符缩写)。

代码显示所示zookeeper的权限:

0 人点赞