首页 > 其他分享 >Zookeeper - zookeeper 底层实现数据一致性

Zookeeper - zookeeper 底层实现数据一致性

时间:2022-10-28 12:06:58浏览次数:54  
标签:文件 事务 Zookeeper 快照 zookeeper 一致性 日志 数据


zookeeper 主要应用事务日志和数据快照来实现底层数据一致性;

事务日志


事务日志是记录zookeeper 事务操作的日志文件。以ZXID 为事务日志文件名的后缀,可以快速的定位到查询的事务。采用“磁盘空间预分配”策略,未使用部分用0 补位,避免每次追加数据都需要磁盘IO 为文件开辟新空间(节省磁盘Seek)。每个日志文件大小固定为64M。


数据快照


数据快照记录某一时刻zookeeper 全部内存数据内容,并将其写入到磁盘当中。同样适用ZXID 作为文件名的后缀。没有采用“磁盘空间预分配”策略,因此数据快照一定程度上能反映当前zookeeper 内存中全量数据的大小。


过程


针对客户端每一次的事务操作,zookeeper 都会将他们记录到事务日志中,同时,zookeeper 也会将数据变更应用到内存数据库中。当zookeeper 进行snapCount 次操作之后,会将内存中的全部数据dump 到本地文件(数据快照)。


[数据快照过程]


zookeeper 为了避免所有节点同时进行数据快照,zookeeper 采用了“过半随机”的策略(logCount> snapCount/2 + random)。开始快照时,首先关闭当前日志文件,重新创建一个新的日志文件(切换事务日志文件)。从内存中获取全部数据和校验信息,序列化,写入磁盘文件。zookeeper 会根据当前已提交的最大ZXID 来生成数据快照文件名。


数据恢复


数据恢复时,zookeeper 会加载最近100 个快照文件(校验不通过则继续向前校验),从快照文件中找到ZXID,定位具体事务,然后执行事务日志中的操作。

标签:文件,事务,Zookeeper,快照,zookeeper,一致性,日志,数据
From: https://blog.51cto.com/u_11290086/5804043

相关文章

  • zookeeper伪分布式环境的搭建
    搭建Zookeeper集群1.1搭建要求真实的集群是需要部署在不同的服务器上的,但是在我们测试时同时启动很多个虚拟机内存会吃不消,所以我们通常会搭建伪集群,也就是把所有的服务......
  • Redis 缓存数据库一致性手撕面答
    引言自Redis入门篇过后,已经好久没更Redis了,接下来应该从实战篇,原理篇,面试篇几个层次来展开,本篇主要是实战篇中的数据库缓存一致性问题,以问题形式展开,应对面试场景作答【melo......
  • 可靠消息最终一致性解决方案
    可靠消息最终一致性分布式事务解决方案指的是事务的发起方执行完本地事务之后。发出一条消息,事务的参与方,也就是消息的消费者一定能够接受到这条消息并处理成功。最终事务......
  • 强一致性分布式事务与最终一致性分布式事务方案
    强一致性事务解决方案优点:1)数据一致性比较高2)在任意时刻都能都够查询到最新写入的数据缺点:1)存在性能问题,在分布式事务未完全提交和回滚之前,应用不能查询到最新的数据......
  • SpringCloud(一) - Dubbo + Zookeeper
    Dubbo和Zookeeper不是SpringCloud的东西,放在这里只是为了方便复习;1、下载安装Zookeeper和Dubbo1.1下载安装教程下载安装教程windows环境下安装zookeeper教程详解(单......
  • 再聊聊zookeeper
    聊完kafka必不可少的需要再聊一聊zk了,下面开始一、ZK是什么ZooKeeper是分布式应用程序的高性能协调服务。它可以实现分布式的选主、统一配置管理,命名,分布式节点同步,分布......
  • Zookeeper的服务器的log4j升级为log4j2的升级方案(忽略配置化兼容问题)
    参考在线markdown编辑器:​​http://marxi.co/​​Zookeeper的服务器的log4j升级为log4j2的升级方案(忽略配置化兼容问题)目前希望可以升级将Zookeeper中log4j的版本升级到log......
  • ZooKeeper原理架构
    一、ZooKeeper简介1.1、zookeeper由来   Zookeeper最早起源于雅虎研究院的一个研究小组。在当时,研究人员发现,在雅虎内部很多大型系统基本都需要依赖一个类似的系统......
  • zookeeper 集群搭建
    zookeeper集群搭建vi~/.bashrcexportZOOKEEPER_HOME=/data/zookeeper-3.4.14exportPATH=$ZOOKEEPER_HOME/binsource~/.bashrcroot@node148:/data/zookeeper-3.4.14/con......
  • zookeeper 部署
    2.1.1 部署步骤解压zookeeper部署包,并启动zookeeper服务。#解压tar-zxvfzookeeper-3.5.5-bin.tar.gz#启动cdapache-zookeeper-3.5.5-bin/bin./zkServer.shs......