zookeeper源码解析(一)

2021SC@SDUSC 

从ZKDatabase说起

ZKDatabase类维护着zookeeper的内存数据库,具体包括了数据树,会话信息和事务提交日志等。启动的时候读取磁盘上的日志和快照,把相关信息load到内存里面。

首先,我们不妨来看一下ZKDatabase类的静态变量和成员变量。

    //为该类创建日志记录器
    private static final Logger LOG = LoggerFactory.getLogger(ZKDatabase.class);
    //要维护的四个成员变量
    protected DataTree dataTree;
    protected ConcurrentHashMap sessionsWithTimeouts;
    protected FileTxnSnapLog snapLog;
    protected long minCommittedLog, maxCommittedLog;

dataTree:维护了树形数据结构,不包含任何网络相关或客户端连接相关的代码。

sessionWithTimeouts:存储sessionID和对应的过期时间,使用并发哈希表ConcurrentHashMap作为变量类型,这是HashMap的一个线程安全的、支持高效并发的版本。

(PS:这里简单介绍一下sessionID和对应的过期时间的含义。

sessionID: 会话ID,用来唯一标识一个会话,每次客户端创建会话的时候,zooke

你可能感兴趣的:(zookeeper)