ZooKeeper session 管理

ZooKeeper的session管理是由LearnerSessionTracker和SessionTrackerImpl类来进行管理的。
1)LearnerSessionTracker管理Leader节点的session信息
包括Leader节点所有的sessionId都是由SessionTrackerImpl.initializeNextSession来生成Id,因为Leader节点就一个,所以LearnerSessionTracker写很简单,这里就不叙述了。
2)SessionTrackerImpl管理其他节点的session信息
SessionTrackerImpl的方法主要是维护属性 sessionsById,sessionSets(以expireTime为Key的HashMap,run时使用),sessionsWithTimeout,并计算nextExpirationTime(roundToInterval方法)。
SessionTrackerImpl继承Thread,run方法主要wait session的nextExpirationTime和currentTime之间的差值,同时执行SessionExpirer.expire(SessionExpirer类型包括:LeaderZooKeeperServer,FollowerZooKeeperServer,ObserverZooKeeperServer)。