目的:想把爬虫系统的配置转移到zookeeper管理java
zookeeper做为一个帮助搭建分布式系统的框架,在统一管理配置和选举master上的很是优秀。node
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等 apache
测试使用zookeeper很是简单,如今如今,简单的配置便可windows
download : http://www.apache.org/dyn/closer.cgi/zookeeper/(官方推荐版本) api
解压:目录结构 最主要的几个目录并发
bin | 启动命令所在目录 |
conf | zookeeper的配置 zoo.conf |
windows下点击 zkserver.cmd 启动框架
zoo.conf的具体配置种目前最关键的就是 对外的端口 默认 2181分布式
观察控制台,通常不报错,就是启动成功了。oop
1:zookeeper 实现了一个简单的树形结构的文件系统,node节点的概念就是树形结构上的一个节点。测试
这样一个结构,每个node节点均可以存储数据,配置的统一管理实现根本也在这个地方,把配置数据存储到某一个节点上,我肯能够想象成咱们在咱们的电脑上建了一个层级的文件夹层,每个文件夹内均可以存放数据,这些数据就是咱们须要统一管理的配置信息。
2:如何实现的数据一致性 。
watcher :zookeeper客户端调用的时候,会定义一个wather ,watcher的概念个人理解就是一个看门狗,时刻的监控的本身监控的节点的数据变化, 好比咱们把咱们爬虫系统全局的一些信息(网站的最大并并发请求maxRrequestNum)存储到了node2-2 上,这个时候客户端链接到zookeeper文件系统后,对node2-2 这个path添加了监听,文件内容发生变化,通知客户端(对应举个例子就是给看门狗安排了个任务,给我看着这块地方,若是这块地方有啥动静,就叫两声,让主人知道),客户端收到这个变化的通知后,就能够同步最新的数据,保证数据一致性。给感兴趣的node添加的这个watcher(条看门狗)是保证一致性的关键。他能够在发生数据变化的时候及时通知客户端(主人)。
3:zookeeper 客户端调用。
3.1:zookeeper自带了客户端调用的api
3.2: 还有一些三方封装的zkclient,使用起来也很是的方便。
3.3:调用代码:
code area
稍后在再研究....