谈谈你对Zookeeper的理解

Zookeeper作为一个开源的协调组件,主要用于解决分布式环境下的数据一致性问题。它提供CP模型确保集群数据一致,利用不同类型的节点实现分布式锁,以及通过持久化节点协助Master选举。Zookeeper被广泛应用在如Kafka、Hbase和Hadoop等项目中,其一致性算法基于Paxos演进的ZAB协议。
摘要由CSDN通过智能技术生成

从分布式系统的三种典型应用场景来说

集群管理

在多个节点组成的集群中,为了去保证集群的HA的特性。

【补充】在集群中,HA通常指的是高可用性(High Availability)。高可用性是指系统或服务能够在出现故障或中断的情况下保持正常运行的能力。

每个节点都会去冗余一份数据副本。
在这里插入图片描述
那么这种情况下,需要保证客户端访问集群中
任意一个节点都是最新的数据。

分布式锁

如何保证跨进程的共享资源的并发安全性,对于分布式系统来说,也是一个比较大的挑战。

而为了达到这个目的,必须要使用跨进程的锁,也就是分布式锁来实现。

Master选举

在多个节点组成集群中,为了降低集群数据同步的一个复杂度,一般会存在Master和Slave两种角色的节点。

在这里插入图片描述
Master负责去做事务和非事务性的请求处理。Slave专门负责非事务请求处理,但是在分布系统中如何去确定某个节点是Master还是Slave,也成了一个难度不小的挑战。

基于这三类常见的场景的需求,所以产生了Zookeeper这样一个中间件。它是一个分布式开源的协调组件。简单来说,就是一个类似于裁判员的角色。专门负责组织和协调解决分布系统中的各类问题。

针对上述问题的具体解决方案

比如针对上述问题,Zookeeper都可以用来解决。

集群管理

Zookeeper提供了CP模型来保证集群中的每个节点的数据一致性。
在这里插入图片描述
当然Zk本身的集群并不是一个强一致性模型。而是一个顺序一致性模型。

如果我们需要去保证CP特性的话,我们需要调用sync方法进行同步。

分布式锁

Zookeeper提供了多种不同的节点类型。比如持久化节点、临时节点、有序节点和容器节点等等。

其中对于分布式锁这个场景来说,Zookeeper可以利用有序节点这样一个特性来实现。
在这里插入图片描述
除此之外,还可以利用同一级节点的唯一特性来实现分布式锁。
在这里插入图片描述

Master选举

Zookeeper可以利用持久化节点来存储和管理其他集群节点的一些信息,从而去进行Master选取的一种机制。

或者还可以利用集中的一些有序节点的特性来实现Master选举。

目前主流的Kafka、Hbase、Hadoop都是通过Zookeeper来实现集群中节点的一个主从选举。

总结

Zookeeper本就是一个经典的分布式数据一致性解决方案。

它主要致力于分布式应用中的一些高性能的、高可用的,并且具有严格访问顺序控制的一些能力模型。实现分布式的协调服务。

它底层的数据一致性算法是基于Paxos算法演进而来ZAB协议实现。

参考资料【Java面试】谈谈你对Zookeeper的理解,看看普通人和高手的区别在哪里?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值