Zookeeper-分布式协调管家 简单原理介绍

本文介绍了ZooKeeper的基本概念,包括其在分布式系统中的作用、集群构成及数据存储特性。此外,还详细解释了ZAB协议如何确保数据一致性,以及ZooKeeper的选主流程。最后,探讨了ZooKeeper在配置管理和分布式锁方面的应用。

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

1 什么是zookeeper

zookeeper 可以理解成一个管家,可以用zookeeper来管理一些分布式集群。比如 一个系统有一堆服务器组成,这些服务器有统一的配置,可以用zookeeper来存储统一配置(基于回调的机制会通知到所有的server)。可以把zookeeper理解一个公共区域。也可以把zookeeper实现分布式锁。或者使用zookeeper来选主(kafka种使用zookeeper的作用)

2 zookeeper 集群构成

zk集群中有3中角色:
(1) leader:可接受读请求也可以接受写请求
(2) follower:只能接受读请求,如果有写请求,会转接给leader
(3) observer:只能接受读请求。与follower的区别是在leader挂掉后,不能参与投票选举(为了加速选举恢复过程)

3 zookeeper 存储的数据特点

zookeeper中数据存储用的是目录树结构
在这里插入图片描述
每个目录都可以看成一个node节点(每个node节点可以存储1MB)。节点有以下3种类型可以选择

在这里插入图片描述
每个node节点附带的信息
通过 get /test2 /**得到/test2目录下的数据/
在这里插入图片描述

4 zookeeper ZAB协议

当有写请求时的时候,zk集群使用ZAB协议(由paxos协议改进)来完成消息传递的一致性。
在这里插入图片描述

5 zookeeper 选主过程

在这里插入图片描述
在这里插入图片描述

6 zookeeper 使用

6.1配置管理

在这里插入图片描述
(代码太多,具体代码可看https://gitee.com/myByteWorld/zookeeper/tree/master/src/java/zookeeper/configTest)

6.2分布式锁

zk分布式锁和redis分布锁的最主要的区别:
zk分布锁:客户端被动,由zk主要回调通知
redis分布锁:客户端主动轮询锁存不不存在

在这里插入图片描述
(代码太多,具体代码可看https://gitee.com/myByteWorld/zookeeper/tree/master/src/java/zookeeper/lock)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值