-
利用zookeeper开发分布式应用系统,实现服务器上下线的动态感知,
-
服务端同时提供查询时间的功能。
-
运行方式:双击main,右键选择"Run AS"下面的"Run Configurations",
-
然后选择Arguments,在上面的框中输入ip和端口号
-
需要注意:端口号是会使用的,所以不能是被使用的,端口号是有范围的
import org.apache.zookeeper.ZooKeeper; import org.apache.zookeeper.data.Stat; import java.io.IOException; import org.apache.zookeeper.CreateMode; import org.apache.zookeeper.KeeperException; import org.apache.zookeeper.WatchedEvent; import org.apache.zookeeper.Watcher; import org.apache.zookeeper.ZooDefs.Ids; public class CaseServer { ZooKeeper zk = null; //构造zk客户端连接 public void zkCennect() throws Exception { zk = new ZooKeeper("node01:2181,node02:2181,node03:2181", 2000, null); } //注册服务器信息 public void serverInfo(String hostname, String port) throws Exception { //先判断父节点是否存在,如果不存在则创建 Stat stat = zk.exists("/servers", false); if(stat == null) { zk.create("/servers", null, Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); } //注册服务器数据到zk的约定节点下 String create = zk.create("/servers/server", (hostname+":"+port).getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL_SEQUENTIAL); System.out.println(hostname + " 服务器向zk注册节点成功,节点位置为:" + create); } public static void main(String[] args) throws Exception { CaseServer cs = new CaseServer(); //构造zk客户端连接 cs.zkCennect(); //注册服务器信息 cs.serverInfo(args[0], args[1]); //启动业务线程开始处理业务 new TimeQuery(Integer.parseInt(args[1])).start(); } }
08zookeeper简答应答系统--服务端实现
最新推荐文章于 2024-07-24 21:00:25 发布