猿问

java客户端连接zookeeper集群时如何才能避开失效的服务器

集群模式下,比如我有3个zookeeper服务器,分别是zk1,zk2,zk3,zookeeper兑现创建时连接串写法是zk1:2181,zk2:2181,zk3:2181,按照zk的选举算法,只要有超过半数的节点活着集群就能工作。但是如果这时客户端刚开始初始化,但是zk1挂了,会使用zk1的服务器配置去创建连接,从而报连接被拒绝的异常以致启动退出。这里有什么优雅的方法能在启动阶段让zookeeper自动避开已经失效的节点去选择有效的节点去连接么?
慕运维8079593
浏览 707回答 2
2回答

神不在的星期二

找到一个办法,由于zk的连接是异步创建的,可以在zookeeper对象new之后等待一下,同时判断state是否为connected,上代码:if(!zk.getState().equals(States.CONNECTED)){while(true){if(zk.getState().equals(States.CONNECTED)){break;}try{TimeUnit.SECONDS.sleep(5);}catch(InterruptedExceptione){e.printStackTrace();}}}

元芳怎么了

怎么不好好看文档呢》Tocreateaclientsessiontheapplicationcodemustprovideaconnectionstringcontainingacommaseparatedlistofhost:portpairs,eachcorrespondingtoaZooKeeperserver(e.g."127.0.0.1:4545"or"127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002").TheZooKeeperclientlibrarywillpickanarbitraryserverandtrytoconnecttoit.Ifthisconnectionfails,oriftheclientbecomesdisconnectedfromtheserverforanyreason,theclientwillautomaticallytrythenextserverinthelist,untilaconnectionis(re-)established.另外你知道zk有个玩意叫watcher吗,自己检测连接也是逗
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答