文档章节

Zookeeper 监控节点

echola
 echola
发布于 2018/06/14 16:43
字数 414
阅读 127
收藏 0
原理

利用Znode临时节点的创建、删除的特性
客户端活跃时,临时节点就是有效的。当客户端与ZooKeeper集合断开连接时,临时节点会自动删除 image

步骤
  • watcher监控端创建一个永久型的Znode,并注册这个node的子节点变更事件。
  • service服务端创建临时性子节点
代码
  • 依赖包:
    • Netflix/curator,基于Zookeeper的二次封装,提供了可用性更好的API和链式调用,可以方便的监控子节点的变更,事件注册只需要注册一次。4.0版本支持zookeeper3.4.X
  • 具体文档地址:http://curator.apache.org
	<dependency>
			<groupId>org.apache.curator</groupId>
			<artifactId>curator-recipes</artifactId>
			<version>4.0.0</version>
			<exclusions>
				<exclusion>
					<groupId>org.apache.zookeeper</groupId>
					<artifactId>zookeeper</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
  • 监控端
    //创建客户端连接
   RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3);
    CuratorFramework client1 = CuratorFrameworkFactory.builder().connectString(hostPort)
                .sessionTimeoutMs(5000)//会话超时时间
                .connectionTimeoutMs(5000)//连接超时时间
                .retryPolicy(retryPolicy)
                .build();
        client1.start();
    
    //创建节点
        try {
            client1.create().creatingParentsIfNeeded().withMode(CreateMode.PERSISTENT)
                    .forPath(pnode);
        } catch (Exception e) {
            e.printStackTrace();
        }
        
        //注册子节点的监听事件
        final PathChildrenCache childrenCache = new PathChildrenCache(client1,pnode,true);
        childrenCache.start();
        childrenCache.getListenable().addListener(new PathChildrenCacheListener() {
            @Override
            public void childEvent(CuratorFramework curatorFramework, PathChildrenCacheEvent event) throws Exception {
                log.info("childEvent:{}", JSON.toJSONString(event));
            }
        });
  • 服务端(被监控端)
 zooKeeper = new ZooKeeper(hostPort,3000,this);
        Stat stat = zooKeeper.exists(znode,false);//创建节点,但并不监控
        if(stat==null){
            zooKeeper.create(znode,null, ZooDefs.Ids.OPEN_ACL_UNSAFE,CreateMode.EPHEMERAL);
        }

项目地址:https://github.com/echola2016/watcher
页面截图: image

© 著作权归作者所有

共有 人打赏支持
echola
粉丝 13
博文 23
码字总数 12268
作品 0
西安
程序员
私信 提问
分布式锁与实现(二)基于ZooKeeper实现

引言 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包...

rechardchensir
2018/10/08
0
0
ZooKeeper 学习笔记之扫盲

题外话:从字面上来看,ZooKeeper表示动物园管理员,而Hadoop生态系统中,许多项目的Logo都采用了动物,比如Hadoop采用了大象的形象,所以可以ZooKeeper就是对这些动物进行一些管理工作的。 ...

大数据之路
2012/07/15
0
0
ZooKeeper 的管理工具 - Shepher

Shepher 是一款 ZooKeeper 的管理工具。在小米公司,我们用它作为配置管理中心。Readme in English 特性 ZooKeeper 节点的可视化操作 ZooKeeper 节点的快照管理 ZooKeeper 节点修改的 Diff 和...

梦回唐朝302
2018/05/18
0
0
ZooKeeper学习第五期--ZooKeeper管理分布式环境中的数据

引言 本节本来是要介绍ZooKeeper的实现原理,但是ZooKeeper的原理比较复杂,它涉及到了paxos算法、Zab协议、通信协议等相关知 识,理解起来比较抽象所以还需要借助一些应用场景,来帮我们理解...

卯金刀GG
2017/10/25
0
0
分布式服务框架 Zookeeper -- 管理分布式环境中的数据

安装和配置详解 本文介绍的 Zookeeper 是以 3.2.2 这个稳定版本为基础,最新的版本可以通过官网 http://hadoop.apache.org/zookeeper/来获取,Zookeeper 的安装非常简单,下面将从单机模式和...

风林火山
2010/12/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

MySQL的分表与分区

MySQL分表分区是解决大数据量导致MySQL性能低下的两种方法。 什么是MySQL分表 从表面意思上看,MySQL分表就是将一个表分成多个表,数据和数据结构都有可能会变。MySQL分表分为垂直分表和水平...

吴伟祥
20分钟前
1
0
MySQL查询执行

当我们希望MySQL能够以更高的性能运行查询时,最好的办法就是弄清楚MySQL是如何优化和执行查询的。一旦理解了这一点,很多查询优化工作实际上就是遵循一些原则让优化器能够按照预想的合理方式...

问题终结者
今天
1
0
CDH5动静态资源池配置与回滚

关于动态 静态资源池的配置以前都有提过,可以从以下几篇了解: YARN动态资源池配置案例 https://yq.aliyun.com/ziliao/346856# Hadoop YARN配置参数剖析(4)—Fair Scheduler相关参数 Hadoop...

hblt-j
今天
3
0
WordPress仿站实战教程

有一个月没有写blog了,一直在学习wordpress的知识,现在能够进行简单的政府企业门户网站的仿制,wordpress的主题订制,一般是对前端要求比较高,wordpress学会了,建站还是非常的快的。下面...

临江仙卜算子
今天
4
0
图像库stb_image

https://github.com/nothings/stb 目前一般主流的图像格式也就是bmp,jpg,png,tga,dds,除了DDS一般是给DX用的,虽然一堆OpenGL程序也有用的,但是我一般只用png和tga, png不用说了,带a...

robslove
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部