首页 > 其他分享 >Zookeeper

Zookeeper

时间:2023-09-13 16:57:38浏览次数:28  
标签:创建 Zookeeper 节点 id Znode 监听

一、简介

       可以用zookeeper来做:统一配置管理、统一命名服务、分布式锁、集群管理。

二、数据结构

       跟Unix文件系统非常类似,可以看做是一棵树,每个节点叫做【ZNode】,每个节点可以通过路径来标识,结构图如下:

             

       Znode分类:

                           1、短暂/临时【Ephemeral】:当客户端和服务端断开后,所创建的Znode(节点)会自动删除;

                           2、持久【Persistent】:当客户端和服务端断开后,所创建的Znode(节点)不会自动删除;

       注意:Zookeeper和Redis一样,也是C/S结构【客户端/服务器】

三、监听器

       Zookeeper需要配合监听器才能够做很多事。

      常见的监听场景有以下两个方面:

                                                        1、监听ZNode节点的数据变化;

                                                        2、监听子节点的增减变化;

 

              

 

  通过监听+Znode节点(短暂/持久),Zookeeper就可以有很多功能了。

四、统一配置管理、统一命名服务、分布式锁、集群管理

      4.1、统一配置管理

              【场景】做项目时候,会用到配置,比如数据库配置,我们会写死在项目里面,如果需要更改,也是修改配置文件后提交替换。如果是集群,有100台机器,逐个修改提交就不实际。就需要用到统一管理配置。

              【解决思路】

                                 1、把公共配置抽取出来;

                                 2、对公共配置进行维护;

                                 3、修改公共配置后,应用不需要重新部署。

              【采用方案】

                                 1、公共配置抽取存放于Zookeeper中并落地数据库

                                 2、对公共配置修改后发布到Zookeeper中并落地数据库

                                 3、对应用开启配置实时监听,Zookeeper配置文件一旦被修改,应用可实时听到并获取                                  

                                 

          4.2、统一命名服务

                   就是我们为某一部分资源,给它取一个名字,别人通过这个名字,就可以拿到对应的资源。

                    比如,现有一个域名 www.net.com

                    192.168.1.1

                    192.168.1.2 

       192.168.1.3

                    192.168.1.4

                     别人访问www.net.com 即可访问到我的机器,而不是通过IP去访问。              

                       

        4.3、分布式锁

                我们可以用Zookeeper来实现分布式锁。系统A,B,C都去访问 /locks 节点。

                    

            访问的时候会创建带顺序号的临时节点,比如,系统A创建了id_000000 节点,系统B创建了id_000002 节点,系统C创建了 id_000001节点。

                     

 

     接着,拿到 /locks 节点下的所有子节点(id_000000,id_000001,id_000002),判断自己创建的是不是最小的那个节点。

     1、如果是,则拿到锁。

                        释放锁:执行完操作后,把创建的节点给删除掉

     2、如果不是,则监听比自己要小1的节点变化

   【例子】:           

                 

       4.4、集群管理

                三个系统A、B、C,在ZooKeeper中创建临时节点。          

                 

       只要系统A挂了,那么 /groupMember/A 这个节点就会删除,通过监听 groupMember 下的子节点,系统B和C就能够感知到系统A已经挂了。(新增也是同理)

       除了能够感知节点的上下线变化,Zookeeper还可以实现动态选举Master的功能。(如果集群是主从架构模式下)

       原理也是很简单,如果想要实现动态选举Master的功能,Znode节点的类型是带顺序号的临时节点就好了。

       Zookeeper会每次选举最小编号的作为Master,如果Master挂了,自然对应的Znode节点就会删除,然后让新的最小编码作为Master,这样就可以实现动态选举功能了。

 

标签:创建,Zookeeper,节点,id,Znode,监听
From: https://www.cnblogs.com/xiaobaicai12138/p/17698655.html

相关文章

  • dubbo分布式项目开发____Zookeeper搭建步骤和配置思路
    //搭建zookeeper 1.可以放到在linux下可以在windows下解压到指定的目录如个人:F:\zookeeper2.复制下conf下复制下zoo_simple.cfg文件把复制的修改成zoo.cfg内容如下一定以不要出现中文会报错的3.修改完成后进入windowsdos命令回车一下内容说明注册中心配置正常//资源地址......
  • zookeeper安装
    ZooKeeper介绍ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错......
  • 【Kafka】ZooKeeper启动失败报错java.net.BindException_ Address already in use_ bi
    问题描述Kafka2.8.1ZooKeeper启动失败。zookeeper-server-start.bat../../config/zookeeper.properties[2023-09-0418:21:49,497]INFObindingtoport0.0.0.0/0.0.0.0:2181(org.apache.zookeeper.server.NIOServerCnxnFactory)[2023-09-0418:21:49,498]ERRORUnexpected......
  • Zookeeper搭建
    1.ZookeeperZookeeper是ApacheHadoop项目下的一个子项目,是一个树形目录服务。Zookeeper是一个分布式的、开源的分布式应用程序的协调服务。 2.zookeeper搭建学习教程:04、ZooKeeper--集群搭建下--配置文件修改&启动_哔哩哔哩_bilibili前提:JDK已经安装好了输入java-version......
  • zookeeper集群安装(CentOS7 + zookeeper 3.7.0)
    Linux系统-部署-运维系列导航 zookeeper介绍ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。 zo......
  • Zookeeper入门
    简介ZooKeeper是Apache软件基金会的一个软件项目,它为大型分布式计算提供开源的分布式配置服务、同步服务和命名注册。可以理解为zookeeper是文件系统+监听通知机制。ZooKeeper的架构通过冗余服务实现高可用性。Zookeeper的设计目标是将那些复杂且容易出错的分布式一致性服......
  • prettyzoo-zookeeper图形管理
    1prettyzoo简介PrettyZoo是一个基于ApacheCurator和JavaFX实现的Zookeeper图形化管理客户端。使用了Java的模块化(Jigsaw)技术,并基于JPackage打包了多平台的可运行文件(无需要额外安装Java运行时)。目前已提供了mac(dmg文件)、Linux(deb和rpm文件)、windows(msi文件)......
  • zookeeper
    ......
  • docker-compose的简单使用并搭建zookeeper集群
    简介DockerCompose是一个用于定义和运行多容器Docker应用程序的工具。它能够简化在单个主机上使用多个容器的部署过程。使用DockerCompose,您可以使用简单的YAML文件来定义应用程序的服务、网络和卷,并通过单个命令一键启动、停止和重建整个应用程序。DockerCompose允许......
  • zookeeper安装配置教程
    1、下载地址:https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-3.8.2/apache-zookeeper-3.8.2-bin.tar.gz等待下载完成:2、将压缩包放到/root/software的文件目录下对该压缩包进行解压:tar-zxvfapache-zookeeper-3.7.1-bin.tar.gz解压完成:3、环境的配置进入......