当前位置: 首页 > news >正文

宝安做网站怎么样电脑清理优化大师

宝安做网站怎么样,电脑清理优化大师,海口绿色创意网络科技有限公司,平凉网站建设服务器动态上下线监听案例 需求 在分布式系统中,主节点可以有多台,可以动态上下线,任意一台客户端都能实时感知到主节点服务器的上下线。 需求分析 客户端能实时洞察到服务器上下线的变化 基本流程: ​ 1.服务端启动时去注册…

服务器动态上下线监听案例

需求

在分布式系统中,主节点可以有多台,可以动态上下线,任意一台客户端都能实时感知到主节点服务器的上下线。

需求分析

客户端能实时洞察到服务器上下线的变化

基本流程:

​ 1.服务端启动时去注册信息(创建的都是临时节点)

​ 2.客户端获取到当前在线服务器列表,并注册监听

​ 3.当服务器节点下线

​ 4.服务器节点上下线的通知

​ 5.process()重新再去获取服务器列表,并注册监听

具体实现

环境准备

在pom.xml添加相关依赖

 <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>RELEASE</version></dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.8.2</version></dependency><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.6.1</version></dependency></dependencies>

1、启动zookeeper集群,在集群上创建/servers节点

[root@kk01 ~]# xzk.sh start  	# zk集群启动脚本# 如果没有脚本,使用下面命令去集群的每台机器收到启动zkServer也可以
zkServer.sh start# 进入zk客户端
[root@kk01 ~]# zkCli.sh -server# 创建servers节点
[zk: localhost:2181(CONNECTED) 3] ls /
[zookeeper]
[zk: localhost:2181(CONNECTED) 4] create /servers "servers"
Created /servers

2.服务器端向zookeeper注册代码

public class DistributeServer {private String connectString = "kk01:2181,kk02:2181,kk01:2181";private int sessionTimeout = 2000;private ZooKeeper zk;public static void main(String[] args) {DistributeServer server = new DistributeServer();try {// 1.获取zk连接server.getConnect();// 2.注册服务器到zk集群server.regist(args[0]);// 3.业务逻辑(因为是演示,所以睡眠即可)server.business();} catch (IOException e) {e.printStackTrace();} catch (KeeperException e) {e.printStackTrace();} catch (InterruptedException e) {e.printStackTrace();}}private void business() throws InterruptedException {// 模拟业务逻辑Thread.sleep(Long.MAX_VALUE);}private void regist(String hostname) throws KeeperException, InterruptedException {zk.create("/servers/"+hostname, hostname.getBytes(),// CreateMode.EPHEMERAL_SEQUENTIAL 表示创建的是临时顺序节点ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL_SEQUENTIAL);System.out.println(hostname + " is online");}private void getConnect() throws IOException {zk = new ZooKeeper(connectString, sessionTimeout, new Watcher() {@Overridepublic void process(WatchedEvent event) {}});}
}

3.客户端获取到当前在线服务器列表,并注册监听,代码如下


public class DistributeClient {private String connectString = "kk01:2181,kk02:2181,kk01:2181";private int sessionTimeout = 2000;private ZooKeeper zk;public static void main(String[] args) {DistributeClient client = new DistributeClient();try {// 1.获取zk连接client.getConnect();// 2.监听 /server 下面子节点的增加和删除client.getServerList();// 3.业务逻辑(因为是演示,所以睡眠即可)client.business();} catch (IOException e) {e.printStackTrace();} catch (KeeperException e) {e.printStackTrace();} catch (InterruptedException e) {e.printStackTrace();}}private void business() throws InterruptedException {// 模拟业务逻辑Thread.sleep(Long.MAX_VALUE);}private void getServerList() throws KeeperException, InterruptedException {List<String> children = zk.getChildren("/servers", true);List<String> servers = new ArrayList<>();for (String child : children) {byte[] data = zk.getData("/servers/" + child, false, null);servers.add(new String(data));}// 打印System.out.println(servers);}private void getConnect() throws IOException {zk = new ZooKeeper(connectString, sessionTimeout, new Watcher() {@Overridepublic void process(WatchedEvent event) {try {getServerList();} catch (KeeperException e) {e.printStackTrace();} catch (InterruptedException e) {e.printStackTrace();}}});}
}

测试

1、在Linux上(zk客户端)命令行增加减少服务器

1)启动 DistributeClient 客户端

即在idea上运行

2)在kk01上的zk客户端 /servers 目录下创建 临时带序号节点

[zk: localhost:2181(CONNECTED) 11] create -e -s /servers/hadoop100 "hadoop100"
Created /servers/hadoop1000000000000
[zk: localhost:2181(CONNECTED) 12] create -e -s /servers/hadoop101 "hadoop101"
Created /servers/hadoop1010000000001
[zk: localhost:2181(CONNECTED) 13] create -e -s /servers/hadoop103 "hadoop103"
Created /servers/hadoop1030000000002
[zk: localhost:2181(CONNECTED) 18] ls /servers
[hadoop1000000000000, hadoop1010000000001, hadoop1030000000002]

3)观察idea控制台变化

[]
[]
[hadoop100]
[hadoop101, hadoop100][hadoop101, hadoop100, hadoop103]

4)执行删除操作,删除部分节点

[zk: localhost:2181(CONNECTED) 19] delete /servers/hadoop1030000000002
[zk: localhost:2181(CONNECTED) 20] ls /servers
[hadoop1000000000000, hadoop1010000000001]

5)再次观察idea控制台变化

[hadoop101, hadoop100]

2、在idea上操作增加减少服务器

1)启动 DistributeClient客户端(如果前面已经启动过了,则忽略此步骤)

2)启动DistributeServer服务

​ 在args[]数组传入 hadoop103

3)观察idea控制台发现打印了如下信息

hadoop103 is online

4)在zkClient查询节点信息,如下

[zk: localhost:2181(CONNECTED) 33] ls /servers
[hadoop1000000000000, hadoop1010000000001, hadoop1030000000003]
http://www.ds6.com.cn/news/12938.html

相关文章:

  • 要找人做公司网站应该怎么做网站接广告平台
  • 国内校园网站建设百度快照功能
  • 做外贸自己做网站么百度网盘搜索引擎入口在哪
  • 做公司网站需要提供的资料软文编辑器
  • 苏州seo培训多少钱廊坊seo管理
  • 做推送的网站除了秀米还有百度不能搜的十大禁词
  • 织梦做的网站怎么加弹窗山东服务好的seo公司
  • 做外贸要开通哪个网站如何做平台推广赚钱
  • 临沂建设网站百度客服在线客服入口
  • 党政门户网站怎么做软文写作范文500字
  • 网站建设开发协议自动收录
  • 上海网站制作网络推广厦门seo小谢
  • 公司网站建设需要什么网络营销公司注册找哪家
  • 花都手机网站建设镇江网站建设企业
  • 科技网站欣赏谷歌浏览器下载
  • 怎么做淘宝客的跳转网站seo外包是什么
  • seo 网站文章一般要多少字百度应用搜索
  • 自己做彩票网站犯法吗抖音推广网站
  • 漳州做网站制作免费的网络营销方式
  • 上海环球金融中心风水手机系统优化软件哪个好
  • 山东站群网站建设澎湃新闻
  • 国务院政府网站发展建设的意见站长工具seo综合查询可以访问
  • 佛山营销型网站建设公司网站开发工程师
  • 网站建设一般人能操作吗百度浏览器
  • 南通外贸建站微信公众号怎么推广
  • php 网站开发教程百度一下百度网页版
  • 政府网站数据库错误百度排行榜明星
  • 六安企业网站seo多少钱搜索引擎推广有哪些
  • 企业网站建设方案.doc广告行业怎么找客户
  • 一千元做网站长春网站建设定制