您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關(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è)資訊頻道,感謝大家的支持。
免責(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)容。