1 添加依赖
<dependency>
<groupId>org
.apache
.zookeeper
</groupId
>
<artifactId>zookeeper
</artifactId
>
<version>3.6.2</version
>
</dependency
>
2 Node.java
package com
.clevercode
.biz
.webservice
.controller
;
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 Node implements Watcher {
ZooKeeper zk
;
String hostPort
;
String znode
;
String data
;
public Node(String hostPort
,String znode
,String data
) throws Throwable
{
this.hostPort
= hostPort
;
this.znode
= znode
;
this.data
= data
;
zk
= new ZooKeeper(hostPort
, 3000, this);
try {
zk
.create(znode
, data
.getBytes(), Ids
.OPEN_ACL_UNSAFE
, CreateMode
.EPHEMERAL
);
System
.out
.println("master节点是:" + data
);
} catch (KeeperException.NodeExistsException e
) {
System
.out
.println("master节点是:" + new String(zk
.getData(znode
, false, null
)));
zk
.exists(znode
, true);
}
}
public void process(WatchedEvent event
) {
try {
if (event
.getType() == EventType
.NodeDeleted
) {
try {
zk
.create(znode
, data
.getBytes(), Ids
.OPEN_ACL_UNSAFE
, CreateMode
.EPHEMERAL
);
System
.out
.println("master节点是:" + data
);
} catch (KeeperException.NodeExistsException e
) {
System
.out
.println("master节点是:" + new String(zk
.getData(znode
, false, null
)));
zk
.exists(znode
, true);
}
}
} catch (KeeperException e
) {
e
.printStackTrace();
} catch (InterruptedException e
) {
e
.printStackTrace();
}
}
}
3 Node1.java
package com.clevercode.biz.webservice.controller;
import com.clevercode.biz.webservice.controller.Node;
public class Node1 {
public static void main(String[] args) throws Throwable {
new Node("192.168.56.100:2181,192.168.56.101:2181,192.168.56.102:2181", "/master","node1");
System.in.read();
}
}
4 Node2.java
package com.clevercode.biz.webservice.controller;
import com.clevercode.biz.webservice.controller.Node;
public class Node2 {
public static void main(String[] args) throws Throwable {
new Node("192.168.56.100:2181,192.168.56.101:2181,192.168.56.102:2181", "/master","node2");
System.in.read();
}
}
5 Node3.java
package com.clevercode.biz.webservice.controller;
import com.clevercode.biz.webservice.controller.Node;
public class Node3 {
public static void main(String[] args) throws Throwable {
new Node("192.168.56.100:2181,192.168.56.101:2181,192.168.56.102:2181", "/master","node3");
System.in.read();
}
}
6 启动Node1,Node2,Node3
杀掉node1之后。
技术交流
CleverCode是一名架构师,技术交流,咨询问题,请加CleverCode创建的qq群(架构师俱乐部):517133582。加群和腾讯,阿里,百度,新浪等公司的架构师交流。【架构师俱乐部】宗旨:帮助你成长为架构师!