zookeeper 学习

zookeeper 是用来管理HMaster和RegionServer的, 和datanode复制没有关系


---------------
核心是watch, 用来监听其他服务器中节点的变化情况

节点znode, 可以分为永久节点和临时节点
永久节点存放需要同步管理的数据
临时节点作为心跳测试,和session的生命周期一致, 所有节点都能知道其他节点的状态。
还用来作为选举master,sequence最小的一个。


watch事件触发
为读操作设置watch: exists getChildren getData
watch种类分为: data watch 和 child watch
setData 触发data watch
create delete 触发 data watch 和 child watch


watch只能生效一次
如果要一直监控一个值得话,需要使用StatCallback


package alwaysWatch;

import org.apache.zookeeper.AsyncCallback.StatCallback;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.data.Stat;

public class Main implements Watcher, StatCallback {
String znode = "/e";
ZooKeeper zk;

public Main() throws Exception {
zk = new ZooKeeper("192.168.1.107:2181", 30000, this);
zk.exists(znode, true);
Thread.sleep(Long.MAX_VALUE);
}
public static void main(String[] args) throws Exception {
new Main();
}

@Override
public void process(WatchedEvent event) {
zk.exists(znode, true, this, null);
}

@Override
public void processResult(int rc, String path, Object ctx, Stat stat) {
try {
byte b[] = zk.getData(znode, false, null);
System.out.println(new String(b, "UTF-8"));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}



参考
http://www.cnblogs.com/zhangchaoyang/articles/2536178.html
http://www.blogjava.net/BucketLi/archive/2010/12/21/341268.html

多个server互相监控
http://blog.163.com/wm_at163/blog/static/132173490201232675256528/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值