请教一个zookeeper连接太频繁会爆错误的问题

2025-04-27 17:50:17
推荐回答(1个)
回答1:

Tomcat启动,初始化webcontext;  初始化spring, spring初始某些些bean,这些bean包括了zookeeper的连接相关的bean;  这时zkClient(独立线程)已经连接上服务器了,但是classloader没有加载到org/apache/zookeeper/proto/SetWatches类;  spring初始化失败,导致Tomcat webcontext初始化也失败,应用在挂起状态,但zkClient线程还是正常的;  zookeeper服务器重启,zkClient开始重连,连接上zookeeper服务器;  zkClient触发watch的一些代码,ClassLoader尝试加载org/apache/zookeeper/proto/SetWatches类,但是发现找不到类,于是抛出异常;  zkClient捕获到异常,认为重连失败,close掉connection,休眠几秒之后,再次重连;  于是出现了zkClient反复重试连接zookeeper服务器,而且都是秒连秒断的情况。