ZooKeeper应用技巧 - ZooKeeper - Hadoop技术论坛 - Powered by Discuz!
ZooKeeper应用技巧
有段时间没来论坛了,很高兴Hadoop的队伍越来越大。感恩于论坛的帮助,再结合前段时间对ZooKeeper的研究学习,现在和大家交流下ZooKeeper的应用(实现机制和工作原理论坛资料很丰富)。
在ZooKeeper的分布式应用中,有两大类应用方式:
1 . 利用ZooKeeper类似于文件系统的存储模型,对外提供分组,配置管理,命名空间等服务。
2 . 利用ZooKeeper具有的Ephemeral Node及Watch trigger的特性, 实现某些业务逻辑(如Master-Slave)。
第一类的应用调用ZooKeeper API即可:
存:
- Stat stat = zookeeper.setData(path, data, version);
复制代码
取:
- byte[] data = zookeeper.getData(path, watch, stat);
复制代码
或者
- byte[] data zookeeper.getData(path, watcher, stat);
复制代码
第二类应用利用了Ephemeral Node标识后缀自动增长,Ephemeral Node在Session结束自动删除及Watch 实时一次触发的特性。
例: 实现Master-Slave模式的两种方案。
1> 根据Ephemeral Node标识判断主从(ActiveMQ-apollo)。
2> 根据Ephemeral Node存储信息判断主从(HBase)。
在此类应用中,Watcher的设置最为关键 ,在Watcher 的触发事件中利用下面的状态信息进行某些业务逻辑处理,最终实现Master-Slave模式。
- EventType type = event.getType();
复制代码
- String paht = event.getPath();
复制代码
- KeeperState state = event.getState();
复制代码
ZooKeeper的相关概念及具体特性请参照官方网站及论坛里的帖子。欢迎大家一起交流!!!