Zookeeper菜鸟入手讲解

本文介绍了Zookeeper的基础概念及其在分布式系统中的作用,包括集群管理、统一命名服务、配置管理和分布式锁服务等内容,并详细解释了其选举机制及事务Id的设计原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Zookeeper菜鸟入手讲解

1、Zookeeper是什么

​ Zookeeper是一个分布式的协调服务架构,Zookeeper可以解决分布式环境下常见的一些问题:集群管理、统一命名服务、信息配置管理、分布式锁等功能。

1.1 集群管理

a.掌握集群服务器的数量

b.能够通过一定机制检查集群各个节点的状态,是正常还是宕机,比如通过RPC心跳机制

1.2 统一命名服务

a.主要是为了 确保在集群中每一个节点都有一个唯一确定的命名

1.3 集群配置管理

a.使得集群的全部的或部分节点的配置信息保持一致

1.4 分布式锁服务

a.在分布式环境下,同步代码块、重入锁机制等不能满足,因为是针对同一台服务器内部的多个线程而言。所以实现分布式锁,需要用zookeeper实现。

2.Zookeeper的选举机制

Zookeeper的选举机制分为两个阶段:数据恢复阶段、选举阶段

2.1 数据恢复阶段

在这个阶段每个服务器的节点都要查找自己所拥有的最大的事务Id,也就是找到自己拥有最新的事务,及最新的数据。

2.2 选举阶段

在此阶段每台服务器都会提交一份选举协议,其中包括的内容如下:

a.节点所拥有的最大的事务Id(及拥有最新的数据)

b.自己的选举Id(这个参数在进行Zookeeper安装时,在配置文件进行指定dataDir文件路径,后续会有Zookeeper的安装配置)

c. 提供逻辑时钟值,这个时钟值可以确保,多台服务器的选举在同一轮中进行

d.当前Zookeeper服务器的状态:

Zookeeper服务器的状态 :looking(选举状态)、Leader(主节点)、Follower(从节点)、Observer(观察者状态),在选举过程中Observer节点不会参数投票选举,Observer只是为了同步数据。

节点PK原则

a.首先各个节点会先进行事务Id的比较,哪个节点的事务Id最大,就选举为Leader,因为拥有最新的数据

b.事务Id如果比较不出来,就会进行选举Id的PK,哪个节点较大,哪个节点当Leader。

Zookeeper的选举机制是过半选举,底层目前采用的是ZAB协议,后面会进行更新。

3 关于Zookeeper的事务Id补充说明

Zookeeper的事务Id是一个64位的二进制数,高32为是Epoch Id ,低32位是递增更新事务Id。每当有新的Leader产生那么Epoch id 都会递增1.

那么这样设计事务id的可以防止Zookeeper的脑裂:

脑裂:指的是在一个多节点的集群中,有多个主节点对集群进行管理操作,这种情况可能造成整个集群数据的紊乱。

Zookeeper通过Epoch id可以解决脑裂问题,即所有的Follower节点只接受最大的Epoch Id的Leader节点发送来的数据,注意在Epoch Id 发生变化后,事务Id会从1重新开始递增

好了!今天就到这里了。有错误的地方请大家及时指出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值