Zookeeper 持久化序列化简介
Posted 小伙无限帅
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Zookeeper 持久化序列化简介相关的知识,希望对你有一定的参考价值。
Zookeeper 持久化与序列化
持久化
Leader 和 Follower 中的数据会在内存和磁盘各保存一份, 所以内存中的数据会持久化到磁盘, 类似于 HDFS 中的 NameNode
在 zoo.cfg配置文件中配置的路径下, 存放着 snapShot快照, 和 TxnLog编辑日志
以下相关类都是持久化相关的代码
SnapShot 快照
public interface SnapShot
//反序列化方法
long deserialize(DataTree dt, Map<Long, Integer> sessions)
throws IOException;
//序列化方法
void serialize(DataTree dt, Map<Long, Integer> sessions,
File name)
throws IOException;
//查找最近的快照文件
File findMostRecentSnapshot() throws IOException;
//释放资源
void close() throws IOException;
}
TxnLog 操作日志
public interface TxnLog {
// 设置服务状态
void setServerStats(ServerStats serverStats);
// 滚动日志
void rollLog() throws IOException;
// 追加
boolean append(TxnHeader hdr, Record r) throws IOException;
// 读取数据
TxnIterator read(long zxid) throws IOException;
// 获取最后一个 zxid
long getLastLoggedZxid() throws IOException;
// 删除日志
boolean truncate(long zxid) throws IOException;
// 获取 DbId
long getDbId() throws IOException;
// 提交
void commit() throws IOException;
// 日志同步时间
long getTxnLogSyncElapsedTime();
// 关闭日志
void close() throws IOException;
// 读取日志的接口
public interface TxnIterator {
// 获取头信息
TxnHeader getHeader();
// 获取传输的内容
Record getTxn();
// 下一条记录
boolean next() throws IOException;
// 关闭资源
void close() throws IOException;
// 获取存储的大小
long getStorageSize() throws IOException;
}
}
持久化的核心类: FileTxnSnapLog
序列化
Zookeeper 集群节点间通讯
以上是关于Zookeeper 持久化序列化简介的主要内容,如果未能解决你的问题,请参考以下文章