问题一:Watch2Paths是什么?以及它的使用场景是什么?
Watch2Paths是什么?以及它的使用场景是什么?
参考回答:
Watch2Paths是一个逆向查询表,结构为HashMap。其使用场景主要是用于统计某个Watcher到底订阅了哪些ZNode。通过该Watcher,可以在Watch2Paths中找到对应的所有ZNode列表。Watcher本质上是NIOServerCnxn,可以理解成一个连接会话。
关于本问题的更多回答可点击原文查看:
https://developer.aliyun.com/ask/660950
问题二:为什么WatchTables和Watch2Paths的关系数量会呈指数增长?
为什么WatchTables和Watch2Paths的关系数量会呈指数增长?
参考回答:
当ZNode和Watcher的数量都比较多,并且客户端订阅的ZNode也比较多,甚至全量订阅时,WatchTables和Watch2Paths记录的关系就会呈指数增长。因为每一个ZNode可能与多个Watcher有关联,而每一个Watcher也可能订阅了多个ZNode,这种多对多的关系导致了关系数量的快速增长。
关于本问题的更多回答可点击原文查看:
https://developer.aliyun.com/ask/660951
问题三:当ZNode数量为3,Watcher数量为2时,WatchTables和Watch2Paths各有多少条关系?
当ZNode数量为3,Watcher数量为2时,WatchTables和Watch2Paths各有多少条关系?
参考回答:
当ZNode数量为3,Watcher数量为2时,WatchTables和Watch2Paths各有6条关系。
关于本问题的更多回答可点击原文查看:
https://developer.aliyun.com/ask/660952
问题四:为什么Watcher与ZNode的关系条数会达到1亿?
为什么Watcher与ZNode的关系条数会达到1亿?
参考回答:
Watcher与ZNode的关系条数达到1亿,主要是因为在这个异常的ZK-Node中,ZNode和Watcher的数量都非常大,并且存在大量的订阅关系。每一个Watcher可能订阅了大量的ZNode,而每一个ZNode又可能被多个Watcher订阅,这种复杂的订阅关系导致了关系条数的剧增。
关于本问题的更多回答可点击原文查看:
https://developer.aliyun.com/ask/660953
问题五:大量的Watcher与ZNode关系会导致什么问题?
大量的Watcher与ZNode关系会导致什么问题?
参考回答:
大量的Watcher与ZNode关系会导致内存开销显著增加。因为每一条关系都需要存储,如果关系数量巨大,那么所需的内存空间也会非常大。例如,在监控中发现的异常ZK-Node中,仅存储这些关系的“壳”就需要约5.9GB的无效内存开销。
关于本问题的更多回答可点击原文查看: