01 ZooKeeper概述

2019-10-23  本文已影响0人  攻城狮哦哦也

1 什么是ZooKeeper

Zookeeper是大数据生态圈中的重要组件,其由雅虎开源并成为Apache的顶级项目。用一句话对其进行定义就是:它是一套高吞吐的分布式协调系统。
ZooKeeper致力于提供一个高性能、高可用,且具备严格的顺序访问控制能力的分布式协调服务,是雅虎公司创建,是Google的Chubby一个开源的实现,也是Hadoop和Hbase的重要组件。

Zookeeper至少具有以下特点:

Zookeeper设计目标:

2 使用场景

分布式环境协调和通信到底有什么场景?

负载均衡

配置管理
分布式队列

3 节点

3.1数据模型

ZooKeeper的视图结构和标准的Unix文件系统类似,其中每个节点称为“数据节点”或ZNode,每个znode可以存储数据,还可以挂载子节点,因此可以称之为“树”

image.png
特性:

3.2 节点类型

Zookeeper节点类型

注:对于持久节点和临时节点,同一个znode下,节点的名称是唯一的!这是实现分布式锁的基础!!!

3.3 节点状态属性

序号 属性 数据结构 描述
1 czxid long 节点被创建的Zxid值 (事务ID可以识别出请求的全局顺序)
2 mzxid long 节点被修改的Zxid值(事务ID可以识别出请求的全局顺序)
3 pzxid long 子节点最后一次被修改时的事务ID(事务ID可以识别出请求的全局顺序)
4 ctime long 节点被创建的时间
5 mtime long 节点最后一次被修改的时间
6 versoin long 节点被修改的版本号 (基于CAS理论保证分布式数据原子性操作)
7 cversion long 节点的所拥有子节点被修改的版本号(基于CAS理论保证分布式数据原子性操作)
8 aversion long 节点的ACL被修改的版本号(基于CAS理论保证分布式数据原子性操作)
9 emphemeralOwner long 如果此节点为临时节点,那么它的值为这个节点拥有者的会话ID;否则,它的值为0
10 dataLength int 节点数据域的长度
11 numChildren int 节点拥有的子节点个数

3.4 ACL保障数据的安全

每个节点在创建之初都会有相应的访问权限,而访问权限的机制就是ACL

ACL机制
表示为scheme:id:permissions,第一个字段表示采用哪一种机制,第二个id表示用户,permissions表示相关权限(如只读,读写,管理等)。zookeeper提供了如下几种机制(scheme):

world: 它下面只有一个id, 叫anyone, world:anyone代表任何人,zookeeper中对所有人有权限的结点就是属于world:anyone的
auth: 它不需要id, 只要是通过authentication的user都有权限(zookeeper支持通过kerberos来进行authencation, 也支持username/password形式的authentication)
digest:它对应的id为username:BASE64(SHA1(password)),它需要先通过username:password形式的authentication
ip:它对应的id为客户机的IP地址,设置的时候可以设置一个ip段,比如ip:192.168.1.0/16, 表示匹配前16个bit的IP段

5 集群解析

5.1 集群特点

image.png

5.2 集群角色

Leader
集群工作机制中的核心,作用如下:
事务请求的唯一调度和处理者,保证集群事务处理的顺序性
集群内部个服务器的调度者(管理follower,数据同步)

Follower
集群工作机制中的跟随者,作用如下:
处理非事务请求,转发事务请求给Leader
参与事务请求proposal投票
参与leader选举投票

PS:proposal见paxos算法

Observer
3.30以上版本提供,和follower功能相同,但不参与任何形式投票,作用:
处理非事务请求,转发事务请求给Leader
提高集群非事务处理能力
配置:
peerType=observer
server.3=192.168.0.102:2888:3888:observer

5.2 集群配置

clientPort=2181
initLimit=5
syncLimit=2
peerType=observer
server.ID1=IP1:2888:3888
server.ID2=IP2:2888:3888
server.ID3=IP3:nnnn:mmmm:observer

IDn: server id,集群中机器序号
IPn: 机器ip地址
nnnn: 同步端口
mmmm: 选举端口
observer: 是否为观察者

PS:集群机器的zoo.cfg文件是一致的

5.2 Zookeeper集群一致性协议ZAB解析

一致性算法细节详见“05 一致性算法”

5.2.1 消息广播

image.png

5.2.2 崩溃恢复

image.png

6 事件监听机制

7 Zookeeper使用注意事项

上一篇 下一篇

猜你喜欢

热点阅读