java訪問zookeeper
❶ java連接zookeeper集群,必須配置多個ip嗎
zookeeper的集群一般都是奇數,多採用三台伺服器,就是一個leader,兩個follower的模式,你只填一個IP,那就是單機模式
❷ 如何解決java介面訪問ZooKeeper時的connectionloss錯誤
常見錯誤日誌如下:
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss
1. 原因:
是因為ZooKeeper建立連接時採用非同步操作,連接操作後並不能保證ZK連接已成功。如果在ZK連接成功前的這個小時間窗口去訪問ZK,就會碰到如上錯誤。
2. 解決思路
我們在新建ZK連接後要等一段時間,保證連接成功後再訪問ZK。
3. 網上比較贊同的解決方案:
主要利用兩個Java類:
(1)java.util.concurrent.CountDownLatch:
一個同步輔助類,類似倒數計數,直到計數器為0時才能對資源「解鎖」。未解鎖前等待該資源的進程只能被阻塞。
主要方法:
public CountDownLatch(int count); /* 構造函數,參數指定計數次數 */
public void countDown(); /* 當前線程調用此函數,則計數減一 */
public void await() throws InterruptedException; /* 此函數會一直阻塞當前線程,直到計時器的值為0為止 */
(2)org.apache.zookeeper.Watcher
ZooKeeper有一個很有用的功能,就是集群上每一個變化都可以通知到自定義的Watchcer。
❸ 如何啟動zookeeper-3.3.6
如何啟動zookeeper-3.3.6?
啟動zookeeper-3.3.6的方法:下載安裝配置zookeeper的伺服器環境-創建文件-設置許可權-編輯-重啟即可。
具體步驟:
一、登陸linux伺服器用cd 命令切換到/etc/rc.d/init.d/目錄下。
十、重啟即可。
❹ java項目打成war後,項目中用到的zookeeper或mq等服務需要再安裝嗎
肯定需要啊。目前沒有那哪種編譯器是內置了zookeeper和mq的,只是提供了對應的驅動和檢測功能。另外,在你的編譯器上運行時肯定也是需要另外啟動zk和mq的,打包的時候是不會把單獨的第三方程序打包進去的。