首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Zookeeper-数据(log)和快照(snapshot)

Zookeeper-数据(log)和快照(snapshot)

作者头像
运维小路
发布2025-05-15 13:10:17
发布2025-05-15 13:10:17
25200
代码可运行
举报
文章被收录于专栏:运维小路运维小路
运行总次数:0
代码可运行

前面我们介绍介绍了几个常用的代理服务器,本章节我们讲来讲解Zookeeper这个中间件。

前面我们介绍了Zookeeper的事务日志(Txn Log)‌,那他在Linux里面究竟是什么样的呢?

默认我们未修改数据存储目录的情况下,这个目录/tmp/zookeeper/

代码语言:javascript
代码运行次数:0
运行
复制
#这只是个范例,现场环境不一样下面的数量不一定是一样的 
[root@localhost ~]# tree /tmp/zookeeper/
/tmp/zookeeper/
├── myid
├── version-2
│   ├── acceptedEpoch
│   ├── currentEpoch
│   ├── log.200000001
│   ├── log.500000001
│   ├── log.60000001a
│   ├── log.800000075
│   ├── log.900000001
│   ├── log.900000004
│   ├── log.900000006
│   └── snapshot.0
└── zookeeper_server.pid

1 directory, 12 files

myid:标识当前ZooKeeper节点的唯一ID(即myid)。

目录version-2:存储ZooKeeper的数据日志文件目录。

Epoch:简单理解就是前面提到选举的任期,在选举中有最高优先级,因为数据里面就包含它。

log.xxx:包含ZooKeeper的所有写操作记录。文件名中的数字表示事务ID(zxid)

事务日志,默认每个文件最大64M,如果leder完成切换,则会实现日志自动轮询。默认情况下,如果未达到快照触发,事务日志会会一直保留,避免出现快照未生成事务日志被删除的情况。

snapshot.x:快照文件,某个时间段完整的数据。

zookeeper_server.pid:记录ZooKeeper服务进程的PID(进程ID)。ZooKeeper重启脚本就依赖它。

默认情况下事务日志和快照是在一个目录下的,但是生产环境建议用下面2个参数分开。

代码语言:javascript
代码运行次数:0
运行
复制
dataDir=/data/zookeeper/snapshot  # 快照存储路径
dataLogDir=/data/zookeeper/logs   # 事务日志存储路径(与快照分离)

前面提到的日志文件,是每一次写请求都会更新,而快照是ZooKeeper根据一定的规则达到一定的条件以后自动执行,那它的默认的规则是多少,如果要修改应该如何修改它。

1. 事务数量阈值(snapCount 参数)默认的指标是10w次事务日志才会触发一次快照,由于3个节点的事务是一样的。避免集群中所有节点同时生成快照(性能抖动),实际触发阈值在 [0.5 * snapCount, snapCount] 间随机选择。若 snapCount=100,000,节点可能在处理 50,000 ~ 100,000 次事务时触发快照,这样就可以规避掉执行快照带来的性能抖动。
2. 时间间隔(snapPeriodSec 参数)默认值snapPeriodSec=0(不启用时间触发)。若设置为正整数(如 3600),则每隔指定秒数强制生成快照,无论事务数量是否达标。
  • 3. 快照的保留数量(autopurge.snapRetainCount):这个参数指定了在自动清理过程中要保留最近快照文件的数量。默认情况下,这个值设置为3,意味着Zookeeper会自动保留最新的3个快照,并删除任何更旧的快照。调整这个参数可以帮助管理磁盘空间使用,同时确保有足够的历史快照可用于数据恢复。

总结下来一个ZooKeeper的关于日志和快照合理的配置就会包含下面的参数:

代码语言:javascript
代码运行次数:0
运行
复制
# 基础配置
dataDir=/data/zookeeper/snapshot  # 快照存储路径
dataLogDir=/data/zookeeper/logs   # 事务日志存储路径(与快照分离)

# 快照与日志参数
snapCount=100000                   # 每 10 万次事务生成快照
autopurge.snapRetainCount=5        # 保留最近 5 个快照
autopurge.purgeInterval=24         # 每日自动清理一次旧快照和日志
preAllocSize=65536                 # 事务日志预分配 64KB
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-05-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维小路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 事务数量阈值(snapCount 参数)默认的指标是10w次事务日志才会触发一次快照,由于3个节点的事务是一样的。避免集群中所有节点同时生成快照(性能抖动),实际触发阈值在 [0.5 * snapCount, snapCount] 间随机选择。若 snapCount=100,000,节点可能在处理 50,000 ~ 100,000 次事务时触发快照,这样就可以规避掉执行快照带来的性能抖动。
  • 2. 时间间隔(snapPeriodSec 参数)默认值:snapPeriodSec=0(不启用时间触发)。若设置为正整数(如 3600),则每隔指定秒数强制生成快照,无论事务数量是否达标。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档