1. 启动类 QuorumPeerMain.java
集群方式:调用runFromConfig(QuorumPeerConfig config)
创建一个QuorumPeer 对象,并初始化设置其相关属性,如ZKDatabase,ServerCnxnFactory成员等。
QuorumPeer继承了Thread(ublic class QuorumPeer extends Thread implements QuorumStats.Provider),所以 调用 对象的 start() 和 join()方法,join返回就结束退出。
2. QuorumPeer 的 start方法,真正开始zookeeper 实例的工作:
public synchronized void start() { loadDataBase(); // 从磁盘加载,恢复数据 cnxnFactory.start(); // 启动处理客户端连接与交互的模块 startLeaderElection(); // 开始选举机制 super.start(); }
3. QuorumPeer类的成员: zkDb = new ZKDatabase(this.logFactory); // logFactory 是 FileTxnSnapLog 类对象,涉及到logDir和dataDir
FileTxnSnapLog 包含处理快照的对象和操作日志的对象。
FileSnap 处理快照,主要是序列化和反序列化;
时间: 2024-10-09 18:31:12