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 持久化序列化简介的主要内容,如果未能解决你的问题,请参考以下文章

Zookeeper源码分析目录

Zookeeper 基本应用及盲点

zookeeperzookeeper 源码解读

Zookeeper Client简介

持久片段和查看器

Tomcat-Session反序列化学习