溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

zookeeper服務(wù)器動態(tài)上下線代碼怎么寫

發(fā)布時間:2021-12-24 17:26:18 來源:億速云 閱讀:124 作者:柒染 欄目:互聯(lián)網(wǎng)科技

今天就跟大家聊聊有關(guān)zookeeper服務(wù)器動態(tài)上下線代碼怎么寫,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

服務(wù)端:
package com.hgs.test;
import java.io.IOException;
import java.util.List;
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.Watcher.Event.EventType;
import org.apache.zookeeper.ZooDefs.Ids;
import org.apache.zookeeper.ZooKeeper;
public class ZKserver {
private ZooKeeper  zk = null; 
    private final static String connectString = "192.168.6.131:2181,192.168.6.132:2181,192.168.6.133:2181";
    private final static int sessionTimeout = 2000;
    private final static String parentNode="/servers";
    
    
public static void main(String[] args) {
       ZKserver zkserver = new ZKserver();
       zkserver.getConnect();
       zkserver.register(args[0]);
       zkserver.doSomthing();
}
public void getConnect() {
try {
zk = new ZooKeeper(connectString, sessionTimeout, new Watcher() {
@Override
public void process(WatchedEvent event) {
try {
if (zk.exists(parentNode,false)==null) {
System.out.println(zk.getChildren("/", true));
}else {
if(event.getType()==EventType.NodeChildrenChanged) {
try {
System.out.println(zk.getChildren(parentNode, true)+ event.getType().toString()+"  "+(event.getType()==EventType.NodeChildrenChanged));
} catch (Exception e) { 
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
} catch (Exception e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
      
}
});
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void register(String host) {
try {
if(zk.exists(parentNode,false)==null ) {
zk.create(parentNode, null, Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
}
zk.create(parentNode+"/server", host.getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL_SEQUENTIAL);
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println("register sever failed !");
System.exit(1);
}
}
public void doSomthing() {
System.out.println("doSomething......");
try {
Thread.sleep(Long.MAX_VALUE);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
服務(wù)端:
package com.hgs.test;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.data.Stat;
public class ZKclient {
private ZooKeeper  zk = null; 
    private final static String connectString = "192.168.6.131:2181,192.168.6.132:2181,192.168.6.133:2181";
    private final static int sessionTimeout = 2000;
    private volatile List<String> serverList = new ArrayList<String>();
    private final static String parentNode="/servers";
    int i = 10;
public static void main(String[] args) {
ZKclient  client = new ZKclient();
client.getConnect();
client.getServerList();
client.doSomething();
}
public void getConnect() {
try {
zk = new ZooKeeper(connectString, sessionTimeout, new Watcher(){
@Override
public void process(WatchedEvent event) {
try {
Stat st = zk.exists(parentNode, true);
//System.out.println(st);
if(st!=null) {
getServerList();
}else {
   zk.getChildren("/", true);
}
} catch (KeeperException | InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void getServerList() {
List<String> ls = new ArrayList<String>();
try {
Stat st = zk.exists(parentNode, true);
if(st!=null) {
for(String str:zk.getChildren(parentNode, true)) {
String hosts = new String(zk.getData(parentNode+"/"+str, false , null));
ls.add(hosts);
}
}else {
zk.getChildren("/", true);
}
} catch (KeeperException | InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
serverList = ls;
System.out.println(ls);
}
public void doSomething() {
System.out.println(serverList);
try {
Thread.sleep(Long.MAX_VALUE);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

看完上述內(nèi)容,你們對zookeeper服務(wù)器動態(tài)上下線代碼怎么寫有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI