一篇文章轻松搞懂Zookeeper原理

Zookeeper是一个开源的分布式协调服务,用于解决分布式系统中的节点管理问题。它采用观察者模式,提供文件系统和通知机制,常用于统一配置管理、命名服务、集群管理和分布式协调。Zookeeper的数据结构类似文件系统,由Znode组成,分为四种类型。其通知机制(监听)确保数据变更和子节点变化时能及时通知客户端。在数据一致性方面,Zookeeper通过ZAB协议和 Leader-Follower 模型保证数据的一致性和高可用性。当Leader宕机,会触发选举和数据同步过程。
摘要由CSDN通过智能技术生成
一.概述

 ZooKeeper 是什么?

  • 是一个开源的分布式协调服务。使用分布式系统就无法避免对节点管理的问题(需要实时感知节点的状态、对节点进行统一管理等等),而由于这些问题处理起来可能相对麻烦和提高了系统的复杂性,ZooKeeper作为一个能够通用解决这些问题的中间件就应运而生了。
  • 从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,一旦这些数据的状态发生变化,Zookeeper 就 将负责通知已经在Zookeeper上注册的那些观察者做出相应的反应。
  • 实现原理:zookeeper=文件系统+通知机制。

Zookeeper的作用(应用场景)?

  • 统一配置管理:比如现在有A.yml,B.yml,C.yml配置文件,里面有一些公共的配置,但是如果后期对这些公共的配置进行修改,就需要修改每一个文件,还要重启服务器。比较麻烦,现在将这些公共配置信息放到ZK中,修改ZK的信息,会通知A,B,C配置文件。多方便
  • 统一命名服务:这个的理解其实跟域名一样,在某一个节点下放一些ip地址,我现在只需要访问ZK的一个Znode节点就可以获取这些ip地址。
  • 同一集群管理:分布式集群中状态的监控和管理,使用Zookeeper来存储。
  • 分布式协调:这个是我们最常用的,比如把多个服务提供者的信息放在某个节点上,服务的消费者就可以通过ZK调用。
    • 服务节点动态上下线:如何提供者宕机,就会删除在ZK的节点,然后ZK通知给消费者。
    • 软负载均衡
    • 动态选举Master:Zookeeper会每次选举最小编号的作为Master,如果Master挂了,自然对应的Znode节点就会删除。然后让新的最小编号作为Master,这样就可以实现动态选举的功能了。
  • 分布式锁(后续出文章讲)
二.原理

之所以能做上述功能,主要是归功于ZK的文件系统和通知机制。下面我们来分析这两个机制


 文件系统:

ZooKeeper的数据结构,跟Unix文件系统非常类似,可以看做是一颗树,每个节点叫做Znode。每一个Znode只能存1MB数据。数据只是配置信息。每一个节点可以通过路径来标识,结构图如下:

 Znode节点主要有4中类型:

  • 临时目录节点:客户端与Zookeeper断开连接后,该节点被删除
  • 临时顺序编号目录节点:基本特性同临时节点,只是增加了顺序属性,节点名后边会追加一个由父节点维护的自增整型数字。
  • 持久化目录节点:客户端与Zookeeper断开连接后,该节点依旧存在
  • 持久化顺序编号目录节点:基本特性同持久节点,只是增加了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值