Zookeeper系列之基础篇

孤人 提交于 2019-12-10 07:33:44

Zookeeper系列之基础篇

1. Zookeeper概述

2. Zookeeper必知必会

3. 集群介绍

====================================

一. Zookeeper概述

是一个开源的分布式应用的服务,提供了更高级别的服务,包括:同步、配置维护、分组和命名。
主要目标:通过与标准文件系统一致的组织结果的命名空间,允许分布式进程之间可以进行同步。
功能:提供了优质的高性能、高可用性、和严格有序的访问

二. Zookeeper必知必会

节点类型

  1. 持久节点:所谓持久节点,是指持久节点,是指在节点创建后,就一直存在,直到有删除操作来主动清除这个节点。
  2. 临时节点:和持久节点不同的是,临时节点的生命周期和客户端会话绑定。也就是说,如果客户端会话失效,那么这个节点就会自动被清除掉。注意,这里提到的会话失效,而非连接断开。另外,在临时节点下面不能创建子节点。
  3. 持久顺序节点:这类节点的基本特性和持久节点是一致的。额外的特性是,在ZK中,每个父节点会为他的第一级子节点维护一份时序,会记录每个子节点创建的先后顺序。基于这个特性,在创建子节点的时候,可以设置这个属性,那么在创建节点过程中,ZK会自动为给定节点名加上一个数字后缀,作为新的节点名。这个数字后缀的范围是整型的最大值。
  4. 临时顺序节点:类似临时节点和顺序节点

zookeeper默认为每个节点的最大数据量有一个上限是1M

Stat
在这里插入图片描述
watch
注册事件
通过这三个操作来绑定事件:getData、Exists、getChildren如何触发事件?凡是事务类型的操作,都会触发监听事件。create /delete /setData

Watcher监听机制是Zookeeper中非常重要的特性,我们基于zookeeper上创建的节点,可以对这些节点绑定监听事件,比如可以监听节点数据变更、节点删除、子节点状态变更等事件,通过这个事件机制,可以基于zookeeper 实现分布式锁、集群管理等功能。

watcher特性:当数据发生变化的时候,zookeeper会产生一个watcher事件,并且会发送到客户端。但是客户端只会收到一次通知。如果后续这个节点再次发生变化,那么之前设置watcher的客户端不会再次收到消息。(watcher是一次性的操作)。可以通过循环监听去达到永久监听效果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述原理:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三. 集群介绍

在zookeeper中,客户端会随机连接到zookeeper集群中的一个节点,如果是读请求,就直接从当前节点中读取数据,如果是写请求,那么请求会被转发给leader提交事务,然后leader会广播事务,只要有超过半数节点写入成功,那么写请求就会被提交(类2PC事务)
所有事务请求必须由一个全局唯一的服务器来协调处理,这个服务器就是Leader服务器,其他的服务器就是follower。leader服务器把客户端的失去请求转化成一个事务Proposal(提议),并把这个Proposal分发给集群中的所有Follower服务器。之后Leader服务器需要等待所有Follower服务器的反馈,一旦超过半数的Follower服务器进行了正确的反馈,那么Leader就会再次向所有的Follower服务器发送Commit消息,要求各个follower节点对前面的一个Proposal进行提交;
在这里插入图片描述
Leader
Leader服务器是整个zookeeper集群的核心,主要的工作任务有两项
1.事物请求的唯一调度和处理者,保证集群事物处理的顺序性
2.集群内部各服务器的调度者

Follower
Follower角色的主要职责是
1.处理客户端非事物请求、转发事物请求给leader服务器
2.参与事物请求Proposal的投票(需要半数以上服务器通过才能通知leader commit数据; Leader发起的提案,要求Follower投票)
3.参与Leader选举的投票

Observer
Observer是zookeeper3.3开始引入的一个全新的服务器角色,从字面来理解,该角色充当了观察者的角色。观察zookeeper集群中的最新状态变化并将这些状态变化同步到observer服务器上。Observer的工作原理与follower角色基本一致,而它和follower角色唯一的不同在于observer不参与任何形式的投票,包括事物请求Proposal的投票和leader选举的投票。简单来说,observer 服务器只提供非事物请求服务,通常在于不影响集群事物处理能力的前提下提升集群非事物处理的能力

  1. 观察zookeeper集群中最新状态的变化并将这些状态同步到observer服务器上
  2. 增加observer不影响集群中事务处理能力,同时还能提升集群的非事务处理能力

:感谢您的阅读~

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!