NIOServerCnxn
2019-04-15 本文已影响0人
月半的瘦子
NIOServerCnxn
实现接口
- Watcher(ZK客户端接收事件的,以callback)
- KeeperState
- EventType
- process(WatchedEvent event)
- ServerCnxn(来自客户端的连接)
- 接口 Watcher
- 属性
- session-id
- stat状态-延迟
- sendResponse
属性
- ConnectionBean
- 接口
- ConnectionMXBean(代表客户端连接)
- ZKMBeanInfo(JMX对象)
- 属性
- CnxnStats
- AtomicLong 属性保证原子性
- Channel 连接状态信息
- ZooKeeperServer
- 接口
- SessionExpirer
- ServerStats.Provider
- 属性
- ZooKeeperServerBean
- DataTreeBean
- f
- 接口
- CnxnStats
- 接口
关键数据结构
- DataTree
- node节点全映射
- ConcurrentHashMap
<String, DataNode>
- DataNode synchronized 保证同步
- tree
- ConcurrentHashMap
- WatchManager(dataWatches/childWatches)
- HashMap
<String, HashSet<Watcher>>
- HashMap
<Watcher, HashSet<String>>
- HashMap
- synchronized保证同步
- node节点全映射
Leader
负责维护leader选举、状态同步
数据发送以QuorumPacket
传输方式socket->InputStream->BinaryInputArchive->write
- Proposal
- 内部类
- Proposal
- 属性
- LearnerCnxAcceptor -》follower 接受线程
- LearnerHandler -》Leader为follower创建的线程,由此线程负责处理与leader的会话
- ReentrantReadWriteLock
- AtomicLong follower个数
- 内部类