概述
对于
Zookeeper
的理解,我觉得可以从分布式系统中的三种典型应用场景说起:
第一种:集群管理
在多个节点组成的集群中,为了保证集群的
HA
特性,每个节点都会冗余一份数
据副本。这种情况下需要保证客户端访问集群中的任意一个节点都是最新的数据。
第二种:分布式锁
如何保证跨进程的共享资源的并发安全性,对于分布式系统来说也是一个比较大
的挑战,而为了达到这样一个目的,必须要使用跨进程的锁也就是分布式锁来实
现。
第三种:
Master
选举
在多个节点组成的集群中,为了降低集群数据同步的复杂度,一般会存在
Master
和
Slave
两种角色的节点,
Master
负责事务和非事务请求处理,
Slave
负责非事
务请求处理。但是在分布式系统中如何确定某个节点是
Master
还是
Slave
,也
成了一个难度不小的挑战。
基于这三类常见场景的需求,所以产生了
Zookeeper
这样一个中间件。
它是一个分布式开源协调组件,简单来说,就是类似于一个裁判员的角色,专门
负责协调和解决分布式系统中的各类问题。
比如,针对上述描述的问题,
Zookeeper
都可以解决。
1.
集群管理
提供了
CP
的模型,来保证集群中的每个节点的数据一致性,当然
Zk
本身的集群并不是
CP
模型,而是顺序一致性模型,如果要保证
CP
特性,
需要调用
sync
同步方法。
2.
分布式锁
Zookeeper
提供了多种不同的节点类型,如持久化节点、临时节点、有序节点、
容器节点等,其中对于分布式锁这个场景来说,
Zookeeper
可以利用有序节点的
特性来实现。除此之外,还可以利用同一级节点的唯一性特性来实现分布式锁。
3. Master
选举
Zookeeper
可以利用持久化节点来存储和管理其他集群节点的信息,从而进行
Master
选举机制。或者还可以利用集群中的有序节点特性,来实现
Master
选举。
目前主流的
Kafka
、
Hbase
、
Hadoop
都是通过
Zookeeper
来实现集群节点的主
从选举。
总的来说,
Zookeeper
就是经典的分布式数据一致性解决方案,致力于为分布式
应用提供高性能、高可用,并且具有严格顺序访问控制能力的分布式协调服务。
它底层通过基于
Paxos
算法演化而来的
ZAB
协议实现。
最后
以上就是无限书包为你收集整理的对 Zookeeper 的理解的全部内容,希望文章能够帮你解决对 Zookeeper 的理解所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复