JVM · Java虚拟机原理 · JVM上语言·框架· 生态系统java学习快到碗里来编程语言爱好者

什么是ZooKeeper?及其应用场景简介

2020-11-12  本文已影响0人  我犟不过你

概念

一个分布式协调框架,主要用于分布式场景下的数据管理问题,如:统一命名服务,状态同步服务,集群管理,分布式应用配置项等。

核心概念

1、文件系统的数据结构

数据结构模型:

zookeeper的数据结构是树形结构,每个节点都是像文件目录一样,以“/”开头,如下图所示:

zk数据结构

节点类型

zk主要分为六种节点类型,具体如下图所示:

节点类型
注意:临时节点不能创建子节点

2、事件监听机制

客户端可以对节点或者目录进行监听,当其他客户端对节点进行修改,会由服务端向客户端发送消息。
客户端监听节点收到数据后,会暂停此次的监听,即监听是一次性的。

应用场景

1、配置中心

配置中心

2、注册中心

注册中心

3、分布式锁

分布式锁

使用上面的方式,会产生“羊群效应”,即:当一个节点node被修改,即锁被释放,会通知所有的watch节点,一是这样是非公平锁,另外会对服务器产生较大的压力。可以通过下面的结构创建分布式锁:

分布式锁结构

按照上面的结构:
1、首先创建一个/lock持久化节点
2、四个请求获取锁时,分布按照顺序创建四个顺序临时节点,并且,后面的节点watch前一个节点。
3、当新的获取锁的请求来时,判断当前节点是否是/lock下的第一个节点。
1)是,则直接获取到锁。
2)否,创建一个顺序节点,监听前一个节点。
4、假设当第一个节点释放锁后,其后的第一个节点通过watch会收到通知,成功获取锁,不会有其他节点进行竞争。

上一篇 下一篇

猜你喜欢

热点阅读