Zookeeper入门

介绍

1、何为Zookeeper?

  ZooKeeper 是 一个分布式协调服务,提供了诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知和分布式锁等分布式基础服务。(分布式协调服务:就是说zookeeper是专门用来协调和解决分布式的一些问题的)

2、它可以用来做什么?
   配置中心
   分布式锁
   集群管理 等等…
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、Zookeeper数据模型
  ZooKeeper 是一个树形目录服务(就是说zookeeper它的存储形式是一个目录的形式),其数据模型和Unix的文件系 统目录树很类似,拥有一个层次化结构。
  这里面的每一个节点都被称为:ZNode,每个节点上都会保存自己的数据和节点信息。
  节点可以拥有子节点,同时也允许少量(1MB)数据存储在该节点之下。

节点可以分为四大类:
  •PERSISTENT 持久化节点
  •EPHEMERAL 临时节点:-e
  •PERSISTENT_SEQUENTIAL 持久化顺序节点:-s
  •EPHEMERAL_SEQUENTIAL 临时顺序节点:-es
在这里插入图片描述

4、操作方式

4.1、ZooKeeper 命令操作
 答:简而言之就是通过命令行的方式对zookeeper进行操作…
zookeeper又分为服务端和客户端…

4.2、ZooKeeper Java Api操作
1、Curator介绍
 Curator 是 Apache ZooKeeper 的Java客户端库,就是说它对zookeeper的底层接口进行了进一步的封装,更方便我们通过api的方式对zookeeper进行操作。
常见的ZooKeeper Java API :
  1、原生Java API
  2、ZkClient
  3、Curator

2、CuratorAPI 常用操作(Java方式操作zookeeper常用操作)(重点)
  •建立连接
  •添加节点
  •删除节点
  •修改节点
  •查询节点
  •Watch事件监听
  •分布式锁实现

3、Curator实现分布式锁API
  •在Curator中有五种锁方案:
  •InterProcessSemaphoreMutex:分布式排它锁(非可重入锁)
  •InterProcessMutex:分布式可重入排它锁
  •InterProcessReadWriteLock:分布式读写锁
  •InterProcessMultiLock:将多个锁作为单个实体管理的容器
  •InterProcessSemaphoreV2:共享信号量

5、应用场景实现介绍

5.1、配置中心

5.1.1、介绍

 在分布式系统中,许多的服务被切分成了许多的模块(微服务)来独立运行,如果每次配置文件发生了变化,就需要把每个节点上的配置文件都修改一次,这是非常麻烦、不可忍受的。
 于是,我们把配置文件统一放在一个地方,配置文件修改了之后,能够及时通知所有节点重新加载。这样即使再多的节点,也只需要修改一次配置文件。这个管理统一配置的系统就是统一配置中心。
常见的配置中心
  spring-cloud-config
  apollo
  zookeeper

统一配置中心的核心功能之一就是配置变化后,及时通知所有的节点。zookeeper的watch机制正好可以满足这样的需求,所以可以通过利用zookeeper的watch机制来实现配置中心。

5.1.2、具体实现思路

 1、连接zookeeper服务器;
 2、客户端创建watch监听器(实现watch接口),监听各个节点数据的变化(增删查改),从而做出对应的操作;
(如果zookeeper是集群模式,leader节点还会将更改后的配置数据,先同步更新到其他flowwer节点上)
 3、当zookeeper中的配置信息发生变化时,通过watcher的回调方法捕获变换的配置数据,然后获取到本地,然后更新本地的配置信息;
在这里插入图片描述

5.2、分布式锁

5.2.1、什么是分布式锁?

 看个场景:两个用户同时去抢购秒杀商品,当秒杀服务同时收到秒杀请求时,都去进行库存扣减,此时在没有做任何处理的情况下,就会导致库存数量变成负数从而导致超卖现象。
 答:这种情况下如果是单体项目,我们一般会选择加锁的方式来避免并发的问题。但是在分布式场景中,采用传统的锁并不能解决跨进程并发的问题,所以需要引入一个分布式锁,来解决多个节点之间的访问控制。

5.2.2、Zookeeper如何实现分布式锁?(两种方式)

 1、通过 唯一节点特性 实现分布式锁(谁先创建一个节点,谁就获得锁)
在这里插入图片描述

 2、通过 有序节点 实现分布式锁(在指定节点下创建一个临时有序节点,创建越早的节点的顺序编号越小,最先获得锁)
在这里插入图片描述

6、ZooKeeper 集群搭建

1、Zookeeper集群角色
  在ZooKeeper集群服中务中有三个角色:
   Leader 领导者
     处理事务请求
    集群内部各服务器的调度者

    Follower 跟随者
    处理客户端非事务请求,转发事务请求给Leader服务器
    参与Leader选举投票

   Observer 观察者:
    处理客户端非事务请求,转发事务请求给Leader服务器
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

AKA小徐

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

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

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

打赏作者

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

抵扣说明:

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

余额充值