对一个没有接触过分布式的小伙伴来说,可能还不太清楚Zookeeper在分布式应用中的重要性,今天有位从传统行业转型到互联网的小小伙伴问我,希望跟他讲讲Zookeeper什么,能解决什么问 题?今天,我给大家详细介绍一下。
1、什么是Zookeeper?
在讲什么Zookeeper之前,有必要先介绍一下分布式多个节点组成的集群环境中,所面临的3个常见的挑战。
第一种,集群管理
为了保证集群的高可用,每个节点都会创建一个数据副本。这种情况下,要保证客户端访问集群中的任意一个节点,都要是最新的数据。
第二种,分布式锁
对于分布式系统来说,如何保证共享资源的并发安全性也是一个比较大的挑战,为了达到这样一个目的,必须要使用跨进程的锁,也就是分布式锁来实现。
第三种,Master选举
在多个节点集群中,为了降低集群数据同步的复杂度,一般会将节点设置为两个角色Master和Slave,Master一般负责数据的读写等事务性操作,而Slave只提供数据的读操作。但是,如何去确定某个节点是Master还是Salve也是一项比较复杂的工作。
Zookeeper的出现,主要是为了满足分布式环境中,以上三种常见的场景需求,作为一个分布式的中间件而存在。它相当于是一个分布式开源的协调组件。简单理解,就相当于是一个裁判员的角色,专门负责协调和解决分布式系统中的各类问题。
2、分布式协调的基本原理
1、集群管理
Zookeeper提供了CP模型,来保证集群中的每个节点的数据一致性。当然,ZK本身的集群并不是强制一致性的,而是一个顺序一致性模型。如果我们需要去保证CP特性的话,我们需要调动“sync”同步方法进行同步。
2、分布式锁
Zookeeper提供了多种不同的节点类型,比如持久化节点、临时节点、有序节点和容器节点等等。对于分布式锁这个场景来说,Zookeeper可以利用有序节点这样一个特性来实现。除此之外呢,还可以利用同一级节点的唯一特性来实现分布式锁。
3、Master选举
Zookeeper可以利用持久化节点来存储和管理其他集群节点的一些信息。从而去进行Master选举的一种机制,或者还可以利用集群中的一些有序节点的特性来实现Master选举。目前,主流的Kafka、HBase、Hadoop都是通过Zookkeeper来实现集群节点的主从选举。
3、总结
总的来说,Zookeeper本就是一个经典的分布式数据一致性解决方案。它主要致力于分布式应用中的一些高性能、高可用,并且就严格访问顺序控制的一些能力模型,实现分布式的协调服务。它底层的数据一致性算法是基于Paxos算法演进而来的ZAB协议实现。
以上就是我对Zookeeper的理解。想更深入了解Zookeeper Watch机制、Leader选举底层原理的小伙伴,可以在评论留言。
最后,我把之前分享的视频全部整理成了文字,想获取的小伙伴可以扫描文章底部二维码拿!希望能够以此来提高各位粉丝的通过率。