Zookeeper要点笔记
日志3种:
快照(snapshot) 配置文件参数dataDir指定快照存放目录 文件名 $dataDir/version-2/snapshot.0
事务日志(transaction log) 配置文件参数dataLogDir指定事务日志存放目录 $dataLogDir/version-2/log.100000001
运行日志 在zookeeper主目录下的logs下
查看2进制日志, 2进制日志就是ZNode在内存中序列化后的存储
java -cp /home/zookeeper/lib/zookeeper-3.6.1.jar:/home/zookeeper/lib/slf4j-api-1.7.25.jar:/home/zookeeper/lib/zookeeper-jute-3.6.1.jar org.apache.zookeeper.server.LogFormatter /data/zookeeper/version-2/log.100000001
java -cp /home/zookeeper/lib/zookeeper-3.6.1.jar:/home/zookeeper/lib/slf4j-api-1.7.25.jar:/home/zookeeper/lib/zookeeper-jute-3.6.1.jar:/home/zookeeper/lib/snappy-java-1.1.7.jar org.apache.zookeeper.server.SnapshotFormatter /data/zookeeper/version-2/snapshot.0
部署模式:
ZooKeeper可以以standalone,伪分布式和分布式三种方式部署. standalone 开发模式 伪分布式单机+port实现
简单管理工具:
命令行:zkCli.sh -server localhost:2181
图形:ZooInspector
日志结构
FileHeader: {
magic 4bytes (ZKLG)
version 4bytes
dbid 8bytes
}
TxnHeader: {
sessionid 8bytes
cxid 4bytes
zxid 8bytes
time 8bytes
type 4bytes
}
TxnRecord
写入流程:
1 一次分配65536KB (64MB) 日志 用\0 填充
2序列化 TxnHeader TxnRecord
3生成Checksum
4写入 BufferedOutputStream 缓存有系统完成写入磁盘