首页 > 其他分享 >ZooKeeper-01

ZooKeeper-01

时间:2024-06-19 09:00:01浏览次数:16  
标签:01 ZooKeeper Zookeeper znode 数据 节点 客户端

ZooKeeper 是什么

    ZooKeeper是一个开源的、分布式的协调服务,它通过管理和协调分布式应用程序的配置信息、命名服务、分布式锁和分布式队列等来简化分布式系统的开发和管理。ZooKeeper提供了高可用、高性能和一致性的特性,可以帮助开发人员构建可靠的分布式应用程序。ZooKeeper主要由三个组件组成:客户端、服务器和存储。客户端可以和ZooKeeper服务器通信,并实现对数据的读写操作,而服务器负责接收和处理客户端请求,存储则用于持久化存储数据。ZooKeeper广泛应用于分布式系统中的各种场景,如分布式缓存、分布式锁、任务调度等。

ZooKeeper 提供了什么

     

ZooKeeper是一个开源的分布式协调服务,它提供了以下功能:

  1. 分布式锁:ZooKeeper可以提供分布式环境下的互斥锁,多个客户端可以通过ZooKeeper的锁机制实现对共享资源的互斥访问。

  2. 发布/订阅:ZooKeeper可以作为发布/订阅系统,客户端可以向ZooKeeper注册监听器,当节点数据发生变化时会通知相关的监听器。

  3. 配置管理:ZooKeeper可以用来管理分布式系统的配置信息,客户端可以通过监听节点的变化来获取最新的配置信息。

  4. 命名服务:ZooKeeper可以为分布式系统提供命名服务,客户端可以通过创建相应的znode来注册自己的服务。

  5. 集群管理:ZooKeeper可以用来管理分布式系统的集群,通过ZooKeeper可以实时监控集群中节点的状态,以及实现节点的动态添加和移除。

Zookeeper 文件系统

    

Zookeeper 是一个分布式协调服务,用于在分布式系统中管理和协调各种信息,包括配置信息、命名服务、集群管理等。它提供了一个树状的文件系统接口,称为Zookeeper文件系统(ZooKeeper File System,简称ZFS)。

ZFS 是一个虚拟的树状文件系统,它以节点的形式组织数据。每个节点可以是一个目录或一个叶子节点(也称为znode)。目录节点可以包含其他节点,而叶子节点包含了存储的数据。

在ZFS中,每个节点都有一个唯一的路径,类似于传统的文件系统。节点的路径通过斜杠(/)进行分隔,例如:/node1/node2。节点的路径可以用于访问和操作节点。

ZFS 提供了一组API,用于创建、删除、读取和写入节点。通过这些API,可以操作ZFS中的节点,实现对数据的增删改查。同时,ZFS还提供了一些特性,如节点访问控制、节点监听等,可以帮助开发者更好地利用Zookeeper进行分布式协调和管理。。

Zookeeper 怎么保证主从节点的状态同步

    Zookeeper 通过 ZAB(Zookeeper Atomic Broadcast)协议来保证主从节点的状态同步。ZAB 协议的工作原理如下:

  1. 当主节点接收到客户端的写请求时,它会将该写请求转发给所有的从节点。

  2. 从节点收到写请求后,会将该请求写入本地的事务日志中,并向主节点发送确认。

  3. 当主节点收到过半数从节点的确认后,它会向所有的从节点发送 Commit 消息,表示该写请求已经被提交。

  4. 从节点收到 Commit 消息后,会将该请求应用到自己的状态机中,保证主从节点的状态一致。

Zookeeper-恢复模式

恢复模式的步骤如下:

  1. 找到故障机器的日志文件和数据目录。 在Zookeeper的安装目录下,找到dataLogDir和dataDir两个目录,分别存储了日志文件和数据文件。 故障机器的日志文件和数据目录可以通过配置文件中的dataLogDirdataDir参数找到。

  2. 将故障机器上的数据文件和日志文件拷贝到其他正常机器上。 可以使用命令行工具(如scp)或者其他文件传输工具将故障机器上的数据文件和日志文件拷贝到其他正常机器上。

  3. 修改拷贝文件的权限。 在拷贝文件到其他机器上后,需要确保这些文件的权限与其他机器上的文件相同。可以使用chmod命令修改文件的权限。

  4. 修改Zookeeper配置文件。 打开Zookeeper配置文件(通常位于Zookeeper安装目录下的conf目录中),找到dataLogDirdataDir参数,将其修改为拷贝文件的路径。

  5. 重新启动Zookeeper集群。 在所有机器上依次启动Zookeeper服务,确保各个机器都能正常加入集群。

  6. 检查集群状态。 使用Zookeeper提供的客户端工具(如zkCli)连接到集群,查看集群的状态是否正常。

  7. 如果集群状态正常,则恢复完成。

注意事项:

  • 在进行恢复模式操作前,建议备份故障机器上的数据文件和日志文件,以防操作失误导致数据丢失。
  • 在拷贝文件到其他机器上时,确保文件的完整性和正确性。
  • 修改配置文件后,需要重启Zookeeper服务才能生效。
  • 如果恢复模式无法解决问题,可能需要进行更进一步的故障排查和修复。

Zookeeper-广播模式

    在Zookeeper中,广播模式是一种消息传递模式,用于将消息从一个节点传递给集群中的所有其他节点。这种模式通常用于在集群中的所有节点之间进行协调和同步。

在Zookeeper中,使用称为"znode"的数据节点来实现广播模式。一个znode可以被所有节点订阅,当znode的数据发生变化时,所有订阅该znode的节点将收到通知。

要使用广播模式,在Zookeeper中创建一个znode,并设置它的ACL(访问控制列表)为"world:anyone",这样所有节点都可以访问它。然后,订阅该znode的节点将监视该znode的数据变化,并在数据变化时获取通知。

示例代码如下所示:

import org.apache.zookeeper.*;
import org.apache.zookeeper.data.Stat;

import java.io.IOException;
import java.util.concurrent.CountDownLatch;

public class ZookeeperBroadcast implements Watcher {

    private static final String ZOOKEEPER_HOST = "localhost";
    private static final int SESSION_TIMEOUT = 5000;
    private static final String ZNODE_PATH = "/broadcast";

    private ZooKeeper zooKeeper;
    private CountDownLatch connectedSignal;

    public ZookeeperBroadcast() throws IOException, InterruptedException {
        connectedSignal = new CountDownLatch(1);
        zooKeeper = new ZooKeeper(ZOOKEEPER_HOST, SESSION_TIMEOUT, this);
        connectedSignal.await();
    }

    public void broadcastMessage(String message) throws KeeperException, InterruptedException {
        Stat stat = zooKeeper.exists(ZNODE_PATH, false);
        if (stat == null

Zookeeper-四种类型的数据节点 Znode

     

在Zookeeper中,Znode是一个抽象的数据节点,它是Zookeeper中存储和管理数据的基本单元。Znode可以被分为四种类型,分别是持久节点(Persistent)、临时节点(Ephemeral)、有序持久节点(Persistent Sequential)和有序临时节点(Ephemeral Sequential)。

  1. 持久节点(Persistent):持久节点一旦被创建,除非显式删除,否则将一直存在于Zookeeper中。持久节点适用于存储长期持久化的数据,例如配置信息、元数据等。

  2. 临时节点(Ephemeral):临时节点是一种短期存在的节点,它的生命周期与创建它的客户端会话绑定。当创建临时节点的客户端会话结束后,临时节点会被自动删除。临时节点通常用于表示临时状态或临时任务,例如存储临时计数、临时锁等。

  3. 有序持久节点(Persistent Sequential):有序持久节点和持久节点的行为相同,唯一的区别是有序持久节点在节点路径的末尾加上一个递增的编号。这个递增的编号是Zookeeper服务器生成的,保证节点的顺序性。

  4. 有序临时节点(Ephemeral Sequential):有序临时节点结合了临时节点和有序节点的特性,它在节点路径的末尾加上一个递增的编号。和临时节点一样,当创建这个节点的客户端会话结束后,节点会被自动删除。递增的编号保证了节点的顺序性。

总结 

   

Zookeeper是一个分布式的协调服务,它提供了一个层次化的文件系统,称为Zookeeper文件系统(ZooKeeper File System,ZFS),用于存储和管理数据。Zookeeper文件系统使用类似于UNIX文件系统的路径结构,以文件和目录的形式来表示数据。

在Zookeeper中,数据被存储在称为znode的节点上。每个znode都有一个唯一的路径名,类似于文件系统中的文件路径。znode可以存储数据和元数据,其中数据被表示为字节数组,而元数据包含znode的创建时间、最后修改时间和访问控制列表等信息。

Zookeeper中的所有数据都存储在内存中,并使用快速的读取和写入路径来保持高性能。数据的持久化存储由Zookeeper服务器负责处理,它将数据写入磁盘上的事务日志和快照文件中。

在Zookeeper集群中,通常会配置一个主节点(leader)和多个从节点(follower)。主节点负责处理所有的写入操作,包括创建、更新和删除znode等。而从节点则负责复制主节点上的数据,并提供读取服务。主节点和从节点之间通过心跳机制保持通信,并使用ZAB(ZooKeeper Atomic Broadcast)协议来保持数据的一致性和可靠性。

在主从节点之间,存在一个状态同步机制。当一个从节点启动时,它会连接到主节点,并请求从主节点复制数据。主节点会将最新的数据发送给从节点,并保持与从节点之间的数据同步。从节点将接收到的数据写入自己的事务日志中,并在写入完成后向主节点发送确认消息,以确保数据的一致性。

如果主节点发生故障或不可用,Zookeeper会自动进行选举,选择一个新的主节点来接管服务。选举过程中,只有具有最新事务日志的从节点才能成为新的主节点。一旦新的主节点选举完成,从节点将重新连接到新的主节点,并继续从新的主节点复制数据,以保持数据的同步。

    

 

标签:01,ZooKeeper,Zookeeper,znode,数据,节点,客户端
From: https://blog.csdn.net/Flying_Fish_roe/article/details/139707424

相关文章

  • P5102 [JOI 2016 Final] 领地
    P5102[JOI2016Final]领地模拟赛题,但是赛时挂在了取模上,就差一点啊啊啊啊啊啊。记\((x_i,y_i)\)是移动了\(i\)次后的坐标。肯定要从周期的方面考虑,每一组操作产生的点是上一组操作产生的点在\(x\)轴方向平移了\(x_n\),\(y\)轴方向平移了\(y_n\)得到的,即\(\forall......
  • 漏洞复现之CVE-2012-1823(PHP-CGI远程代码执行)
    关于CGI知识点CGI模式下的参数:-c指定php.ini文件的位置-n不要加载php.ini文件-d指定配置项-b启动fastcgi进程-s显示文件源码-T执行指定次该文件-h和-?显示帮助题目如下图,没有什么发现目录扫描一下dirsearch-uhttp://47.96.234.169:32349/发现info.php,直接......
  • MBR40100CT-ASEMI无人机专用MBR40100CT
    编辑:llMBR40100CT-ASEMI无人机专用MBR40100CT型号:MBR40100CT品牌:ASEMI封装:TO-220最大平均正向电流(IF):40A最大循环峰值反向电压(VRRM):100V最大正向电压(VF):0.78V~0.90V工作温度:-40°C~150°C芯片个数:2芯片尺寸:mil正向浪涌电流(IFMS):250AMBR40100CT特性:低正向压降低功率损耗......
  • 【PXIE301-208】基于PXIE总线架构的Serial RapidIO总线通讯协议仿真卡
     板卡概述       PXIE301-208是一款基于3UPXIE总线架构的SerialRapidIO总线通讯协议仿真卡。该板卡采用Xilinx的高性能Kintex系列FPGA作为主处理器,实现各个接口之间的数据互联、处理以及实时信号处理。板卡支持4路SFP+光纤接口,支持一个PCIex8主机接口,板载1组独立的6......
  • 北京大学数字普惠金融指数(2011-2022年)
    北京大学数字普惠金融指数(2011-2022年),包含省市县三级数据数据年限:省级、地级市(2011-2022年);区县(2014-2022年)数据格式:excel、pdf数据来源:北京大学数字金融研究中心,原始数据(英文抬头)数据内容:指标体系包括总指数、覆盖广度(一级指标)、使用深度(一级指标)、支付业务(二级指标)......
  • [AGC001E] BBQ Hard
    题意求:\[\sum_{i=1}^{n}\sum_{j=i+1}^{n}\dbinom{a_i+b_i+a_j+b_j}{a_i+a_j}\]对\(10^9+7\)取模。\(n\le2\times10^5,1\lea_i\le2000,1\leb_i\le2000\)Sol简单化简一下,给她乘个\(2\),然后减去\(i=j\)的部分。\[\frac{1}{......
  • 代码随想录第10天 | 栈与队列part01
    题目:232.用栈实现队列思路:1.使用双栈,一个作为输入,一个作为输出代码:classMyQueue{private:stack<int>A,B;public:MyQueue(){}voidpush(intx){A.push(x);}intpop(){//删除A栈底元素并返回元素intresult=this->p......
  • 2V升6V升压恒流WT7012
    2V升6V升压恒流WT7012今天给大家介绍一款能驱动多达7串白光LED的升压转换器WT7012。WT7012升压恒流应用:2V升6V升9V升12V恒流驱动。其通过外部电流检测电阻,采用电流控制模式以及固定的工作频率来控制LED电流,较低的反馈电压使得电流检测电阻上的功耗减小,提高了整体工作效率。WT......
  • 处理问题:windows server 2016由于没有远程桌面授权服务器可以提供许可证,远程会话被中
      windowsserver可以多用户同时登陆,默认最大远程登录数量为2,如果有更多人需要同时远程登录,则需要安装远程桌面授权服务,第一次安装后,免费期为120天,超过则无法正常远程登录。解决办法如下:Windowsserver2016服务器远程桌面登录时出现错误提示:“由于没有远程桌面授权服务器......
  • 内存:M321RYGA0PB2-CCP 96G DDR5 RDIMM,KHAA44801B-MC16、KHAA84901B-MC17、KHAA44801B-
    1、M321RYGA0PB2-CCP是一款带存储器的双列直插式存储模块,可通过添加8位奇偶校验信号,实现错误纠正。该器件支持x4/x8组织/每个DIMM和3DPC配置最高2个级别。规格类型:DDR5DIMM类型:RDIMM容量:96GB组织:2Rx4组件成分:(4Gx4)x40速率:6400Mbps工作电压:1.1V针脚数:288应......