zookeeper分布式协调组件详解 -- 学习笔记

Zookeeper是一种分布式协调服务,提供数据一致性、命名服务、配置管理、集群管理等功能。其核心特点是最终一致性、可靠性、实时性。Zookeeper通过ZAB协议实现分布式一致性,采用Paxos算法的FastPaxos模式进行选举。在分布式锁、队列管理等场景中有广泛应用,同时具备Znode文件系统和watch监听系统来存储和监控数据变化。在选举和数据同步过程中,保证了系统的高可用性和数据的一致性。

思考:

1、在分布式场景中,怎么确保一定拿到最新的准确值
2、在分布式场景中存储一个值,为了保证安全,存储了多份
NWR理论: — 抽屉原理
N:总节点数
W:写入副本数
R:读取的副本数
保证拿到最新的数据:R+W>N
至少读取N-W+1个副本才行

Zookeeper每个节点都存储了所有数据的副本,但是zk要求写入成功的节点数达到一半,就认为写入数据成功。
如果W大,这次写入成功的概率就越小,读取数据的压力就越小
如果W小,R读取的额节点就要多,读取的性能就差
所以Zookeeper查询效率高,写入效率低

读取时,读取超过一半节点的数据,就一定会拿到最新的数据,然后根据版本,就可以拿到最新的准确值。

Quorum机制:超过一半的数据写入成功就认为写成功,剩下的暂时剔除(投票机制)

CAP理论:
C:强一致性,数据副本写的越多,一致性越好
A:高可用性,
P:分区容错性,在分布式环境中,一定要保证,当出现网络分区的时候,也能使客户端拿到最新的数据
任何分布式系统,都不可能同时满足以上三个要求;满足两个即可。

BASE理论:针对CAP理论的妥协
一定是会满足P的,C和A进行权衡,就是BASE理论
可以满足,C:最终一致性
A:基本可用

Zookeeper解决问题:
分布式同步、分布式配置管理、分布式集群管理(主节点状态管理、从节点上下线管理)、分布式命名管理、分布式队列管理、分布式锁

Zookeeper底层主要依赖两个组件:

· znode文件系统(存储数据的能力)
· watch监听系统(监听数据变化的能力)

znode文件系统:

  • 不同于Linux,分为文件夹和文件,znode文件系统中只有znode节点(既可以存数据,也可以当作为文件夹)。
  • 但是每个节点都必须要有一个唯一的绝对路径,每个节点都可以存储数据(根节点除外,可以存但是不建议存数据),每隔节点下都可以挂载子节点
  • 虽然说zookeeper每个节点都存储了一份完整数据,但是不能存储大量的数据。所以znode只适合存储非常小量数据,不能超过1M,最好小于1K。

znode的分类:

1、按照生命周期可以分为:
	· 短暂(ephemeral)(断开连接自己删除)
	· 持久(persistent)(断开连接不删除,默认情况) 
2、按照是否自带序列编号可以分为:
	· SEQUENTIAL(带自增序列编号,由父节点维护) 
	· 非SEQUENTIAL(不带自增序列编号,默认情况)

在这里插入图片描述

注意点:
1、创建 znode 时设置顺序标识,znode 名称后会附加一个值,顺序号是一个单调递增的计数器,由 父节点维护
2、在分布式系统中,顺序号可以被用于为所有的事件进行全局排序,这样客户端可以通过顺序号推断事件的顺序
3、EPHEMERAL 类型的节点不能有子节点,所以只能是叶子结点
4、客户端可以在 znode 上设置监听器
监听机制:
客户端注册监听它关心的目录节点,当目录节点发生变化(数据改变、节点删除、子目录节点增加删 除)时,ZooKeeper 会通知客户端。监听机制保证 ZooKeeper 保存的任何的数据的任何改变都能快速

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

erainm

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值