Zookeeper——个人理解

xiaoxiao2021-03-01  5

ZooKeeper概述就不多说了,就是一种分布式协调服务,吧啦吧啦~。

ZooKeeper可以实现:数据发布/订阅、负载均衡、命名服务、分布式协 调/通知、集群管理、Master 选举、配置维护,名字服务、分布式同步、分布式锁和分布式队列 等功能。

优点:

可靠性:单个或多个系统故障不会导致整个系统出现故障瘫痪

可拓展性:可以在需要的时候添加性能(服务),在应用程序配置中进行微小的更改,而不会有停机时间

透明性: 隐藏系统的复杂性,并将其显示为单个实体/应用程序。(简单点说就是:通过zookeeper,我们只需要使用某个服务的时候,直接使用就行,不需要管这个服务来自于哪里)集群角色

集群角色

Leader:领导者,一个集群中同一时刻只存在一个leader,为客户端提供读和写服务

Follower:跟随者,提供读服务,不能提供写服务,负责将写入请求转发给leader节点处理

Observer:观察者,同样提供读服务,不提供写服务,(*重点)并且,Observer不参与leader的选举过程,也不参与写操作的『过半写成功』策略

节点类型

zookeeper的结构其实就是一个树形结构,leader就相当于其中的根结点,其它节点就相当于 follow节点,每个节点都保留自己的内容。

zookeeper的节点分两类:持久节点和临时节点

 

持久节点: 所谓持久节点是指一旦这个 树形结构上被创建了,除非主动进行对树节点的移除操 作,否则这个 节点将一直保存在 ZooKeeper 上。

临时节点: 临时节点的生命周期跟客户端会话绑定,一旦客户端会话失效,那么这个客户端创建的所有临时节点都会被移除。

ZooKeeper的架构

解释一下上图

Client(客户端):分布式应用集群中的一个节点,从服务器访问信息!

Server(服务器):服务器,我们的ZooKeeper总体中的一个节点,为客户端提供所有的服务。

Ensemble:ZooKeeper服务器组。形成ensemble所需的最小节点数为3。(后面说一下为什么最小节点为3)

Leader:服务器节点,如字面意思:Leader(领导者)一个 ZooKeeper 集群同一时刻只会有一个 Leader,其他都是 Follower 或 Observer。Leader在服务启动时被选举。

Follower:跟随leader指令的服务器节点。

工作流

1、读取(read):由特定连接的节点在内部执行,因此不需要与集群进行交互。

2、写入(write):写入过程由leader节点处理。leader将写入请求转发到所有节点并等待节点的回复。如果一半的节点回复,则写入过程完成。如果是follower节点接收的写入请求,那么这个节点会将这个请求转发给leader处理

3、请求处理器(request processor):这个只存在于leader节点。它管理来自follower节点的写入请求。

leader的选举

关于选举,简单点吧(举个栗子)

所有节点创建具有相同路径 /app/leader_election/guid_ 的顺序(包括临时节点),假如当前集群中存在5个节点

/app/leader_election/guid_0000000001  至  /app/leader_election/guid_0000000005

那么这五个节点中谁又会被选举为leader节点呢?答案是:0000000001(tell me why?)

难道就是因为01的数字最小?对滴,就是节点数字最小的为leader,然后 02,03,04,05 都为follower

(*重点)每个follower节点都会监视比自身小的那个节点,05监视04,04监视03,以此类推,如果leader关闭,那么与它相应的节点(栗子中的01)就会被删除。当监视器监听到leader关闭的时候,follower 02 如果在线,那么02所对应的节点就会被选举为leader,02不在线,往下查看。03、04、05,直至找到在线数字最小的节点并选举为leader;

前面遗留的一些问题

1、为什么最小节点为3:先分析分析集群中拥有不同数量节点的效果

如果现在有单个节点,则当该节点故障时,ZooKeeper集合将故障。它有助于“单点故障",不建议在生产环境中使用。

如果现在有两个节点,其中一个节点故障,也就是50%的节点故障,那么ZooKeeper集合还是故障,因为只有多数节点正常,ZooKeeper集合才不会报故障。

如果现在有三个节点,其中一个节点故障的时候,只有33.33%的节点故障,多数节点还是正常,所以这个时候,集合不会报故障。

所以在添加节点的时候,最好添加奇数的节点,例如3,5,7。这也是为什么,最少创建3个几点的原因!

2、过半成功策略:什么是过半成功策略。写入过程由leader节点处理。leader将写入请求转发到所有节点,并等待节点的回复。如果一半以上的节点回复,则写入过程完成。

 

以上是个人对zookeeper的理解,如有错误,欢迎指出,谢谢

转载请注明原文地址: https://www.6miu.com/read-4150188.html

最新回复(0)