首页 > 其他分享 >zookeeper详解

zookeeper详解

时间:2023-02-09 20:33:09浏览次数:45  
标签:快照 zookeeper Leader 详解 集群 日志 数据 节点

————————————————

什么时候新建日志文件:
1、在进行事务日志写入之前,zookeeper会判断是否正在关联一个可写的事务日志文件,如果有则继续追加,如果没有就新建日志文件并管理上
2、上一个日志文件写满了

————————————————

什么时间触发快照:
1、事务日志写入数量达到阈值,每进行一次事务日志记录后,zk都会判断当前是否需要进行数据快照
采用过半随机策略,事务次数在[ snapCount/2 + 1,snapCount ]范围内生成的随机值时,触发数据快照

2、新leader同步数据
如果发生Leader重新选举,新Leader所在机器会检查最近一次快照之后是否有事务日志产生,
有就对最近的一次事务之前的全量数据做一次数据快照

————————————————

事务日志可视化:
./zkTxnLogToolkit.sh ../logs/version-2/log.100000001
包含了session id、cxid(客户端操作序列号)、zxid、操作类型

快照日志可视化:
./zkSnapShotToolkit.sh ../data/version-2/snapshot.0

内容包含以下信息:
cZxid 创建这个节点时的事务ID
ctime 创建节点时间
mZxid 最后修改节点的事务ID
mtime 最后修改节点时间
pZxid 该节点最后更新子节点列表的事务ID
cversion 该节点子节点列表更新版本号,即子节点列表修改次数(不是子节点的值修改)
dataVersion 节点数据版本号
aclVersion 节点访问控制列表版本号
ephemeralOwner 如果为临时节点,则为节点拥有者的sessionID,如果不是临时节点则为0
dataLength 节点数据长度

————————————————

ZooKeeper启动数据初始化和同步:
ZooKeeper 服务器启动期间,需要进行数据初始化工作,就是将磁盘中的日志文件加载到ZooKeeper服务器内存中,主要包括两个过程:从快照日志文件中加载快照数据和根据事务日志进行数据修正。

为什么需要快照日志:
事务日志存的是增量数据
快照日志存的是某个时刻的全量数据
二者合二为一就是最大限度的全量数据

————————————————
数据备份策略:
防止日志文件损坏,可全量备份,开启日志清理后,至少保留3个快照文件
备份时间,一天一备,一小时一备,时间越短数据越新,异地备份,应该把精力放在数据恢复上

数据恢复
恢复数据分为了两种:冷恢复和热恢复

冷恢复就是通过备份的日志文件在 ZooKeeper 启动时初始化和同步,适用于当前集群故障,无法通信的场景
热恢复就是动态的将当前集群的数据同步到目的集群上,前提是当前集群是正常运行,可通信的

如何动态同步,可以利用 Observer 机制.将目的集群中的一个服务设置成当前集群的 Observer,
当前集群的Leader就会把数据动态同步给 Observer了,然后再将目的集群配置启动,
让这个Observer成为目的集群的 Leader 即可.
也可以将目的集群的所有服务都作为当前集群的Observer,可能会消耗一些当前集群 Leader的一些性能,以实际生产情况为准。

使用日志文件恢复数据需要注意,先把目的集群的日志文件清空
(删除 dataDir/version2 和 dataLogDir/version2 )
,将备份日志文件复制到集群中的某个服务即可,目的集群重启后,有备份日志文件的服务将成为 Leader,然后同步数据给 Follower.
前提:目的集群是一个新集群。

如果目的集群是一个已经在用的集群,就不能用日志文件恢复了,需要遍历原集群的数据,然后一条一条地写入到目的集群,该方式消耗性能较大,可能会影响目的集群的正常使用。该方式还有一个缺点就是原集群的 客户端会话不会同步,而日志文件恢复是可以的。
————————————————

Observer 介绍
在 ZooKeeper 集群服务运行的过程中,Observer 服务器与 Follow 服务器具有一个相同的功能,
那就是负责处理来自客户端的诸如查询数据节点等非事务性的会话请求操作.
但与 Follow 服务器不同的是,Observer 不参与 Leader 服务器的选举工作,也不会被选举为Leader服务器

在zoo.cfg配置文件中设置observer
peerType=observer

标签:快照,zookeeper,Leader,详解,集群,日志,数据,节点
From: https://www.cnblogs.com/95max/p/17106948.html

相关文章

  • kafka配置详解
    关闭自动消费Spring-Boot-kafka的配置中有一个参数,提供了自动消费的功能。使用自动消费我们在收到消息的时候会自动向kafka确认消费。但是在一些特殊场景中我们可能需要使......
  • zookeeper
    zookeeper:是一个用于分布式应用程序的高性能协调服务,它在一个简单的界面中公开常见服务(如命名,配置管理,同步和组服务)最低配置3台2c2gzookeeper操作:./zkServer.shstart|......
  • js构造函数详解
    1.构造函数介绍构造函数是专门用来生成对象的函数,它提供模板,描述对象的基本结构。一个构造函数,可以生成多个对象,这些对象都有相同的结构。构造函数的写法就是一个普通的函......
  • LSA 2 详解
    <ar3>displayospflsdbnetworkOSPFProcess1withRouterID3.3.3.3Area:0.0.0.0LinkStateDatabaseType:Network//LSA类型network,也就是LSA-2......
  • zookeeper 安装
    kafka下载地址https://kafka.apachecn.org/downloads.htmlzookeeper下载地址https://zookeeper.apache.org/releases.html#download启动zookeeper配置解压apac......
  • ZooKeeper 避坑实践: Zxid溢出导致选主
    作者:子葵​背景线上 flink用户使用ZooKeeper做元数据中心以及集群选主,一些版本的flink在ZooKeeper选主时,会重启Job,导致一些非预期的业务损失。而ZooKeeper在 zx......
  • Selenium Grid入门详解
    一、简介Selenium是Selenium套件的一部分,它专门用于并行运行多个测试用例在不同的浏览器、操作系统和机器上SeleniumGrid主要使用master-slaves或者hub-nodes (理念:......
  • 【Nginx用法】nginx location正则表达式写法,详解Nginx location 匹配规则(很详细哦)
    本文目录一、常用规则二、实际使用建议三、Flag标志位四、If判断指令五、全局变量六、常用正则七、Rewrite规则八、Rewrite实例8.1实例一8.2实例二九、项目......
  • zookeeper单机版和伪集群版的搭建
    一.单机版1,下载: wgethttp://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz2,解压: tar-zxvfzookeeper-3.4.10.tar.gz3,在 zookeep......
  • Python之ruamel.yaml模块详解(一)
    (Python之ruamel.yaml模块详解(一))1ruamel.yaml简介ruamel.yaml是一个yaml解析器;ruamel.yaml是一个用于Python的yaml1.2加载器/转储程序包;它是PyYAML3.11的衍生产品;r......