了解ZooKeeper
来源:互联网 发布:unity3d 镜面反射 编辑:程序博客网 时间:2024/05/29 13:15
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"> 公司项目中用到Zookeeper的地方肯定不少,想做一下了解。但是从哪里开始,却有些不清楚。</span>
想想,要是真正使用到Zookeeper的人,会以什么样的顺序来用呢?
(1)安装并配置Zookeeper;
(2)在自己的代码中,使用到Zookeeper对外提供的接口;
(3)了解Zookeeper中,与自己业务相关的技术实现。
这篇文章也以这个顺序来进行吧。
一、安装并配置Zookeeper
呃,声明一下,这可以看做是我在学习原理的时候记录下的笔记,也就是看到的所有资料,自己做的摘抄与总结,并没有在电脑上实际操作过。因此不要照做哦。
安装Zookeeper的过程,略。
修改.bash_profile文件是免不了的了,需要增加ZOOKEEPER_HOME环境变量,并修改PATH CLASSPATH两个环境变量。
然后是修改Zookeeper本身的配置文件,放在$ZOOKEEPER_HOME/conf/目录下,将zoo_sample.cfd文件名称改为zoo.cfg。文件内有如下的内容:
<span style="font-family: monospace; white-space: pre; background-color: rgb(240, 240, 240);"> </span>
<span style="font-family: Arial, Helvetica, sans-serif;"># The number of milliseconds of each tick</span>
<pre>tickTime=<span style="color: rgb(128, 0, 128);">2000</span># The number of ticks that the initial# synchronization phase can takeinitLimit=<span style="color: #800080;">10</span># The number of ticks that can pass between# sending a request and getting an acknowledgementsyncLimit=<span style="color: #800080;">5</span># the directory where the snapshot is stored.# <span style="color: #0000ff;">do</span> not use /tmp <span style="color: #0000ff;">for</span> storage, /tmp here is just# example sakes.dataDir=/home/hadoop/zookeeper-<span style="color: #800080;">3.4</span>.<span style="color: #800080;">3</span>/data #这是我修改后的# the port at <span style="color: #0000ff;">which</span> the clients will connectclientPort=<span style="color: #800080;">2181</span>## Be sure to read the maintenance section of the# administrator guide before turning on autopurge.## http:<span style="color: #008000;">//</span><span style="color: #008000;">zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance</span>## The number of snapshots to retain <span style="color: #0000ff;">in</span> dataDir#autopurge.snapRetainCount=<span style="color: #800080;">3</span># Purge task interval <span style="color: #0000ff;">in</span> hours# Set to <span style="color: #800000;">"</span><span style="color: #800000;">0</span><span style="color: #800000;">"</span> to disable auto purge feature#autopurge.purgeInterval=<span style="color: #800080;">1 </span>
解释一下其中的配置项吧。
tickTime:Zookeeper服务器之间,或者服务器与客户端之间的心跳间隔。也就是每个时间间隔,发送一次心跳信号。
dataDir:Zookeeper保存数据的目录。
clientPort:Zookeeper监听这个端口,接口客户端的连接请求。
二、常用到的Zookeeper API
ZooKeeper一些常用的API如下。
- create(path, data, flags): 创建一个ZNode, path是其路径,data是要存储在该ZNode上的数据,flags常用的有: PERSISTEN, PERSISTENT_SEQUENTAIL, EPHEMERAL, EPHEMERAL_SEQUENTAIL
- delete(path, version): 删除一个ZNode,可以通过version删除指定的版本, 如果version是-1的话,表示删除所有的版本
- exists(path, watch): 判断指定ZNode是否存在,并设置是否Watch这个ZNode。这里如果要设置Watcher的话,Watcher是在创建ZooKeeper实例时指定的,如果要设置特定的Watcher的话,可以调用另一个重载版本的exists(path, watcher)。以下几个带watch参数的API也都类似
- getData(path, watch): 读取指定ZNode上的数据,并设置是否watch这个ZNode
- setData(path, watch): 更新指定ZNode的数据,并设置是否Watch这个ZNode
- getChildren(path, watch): 获取指定ZNode的所有子ZNode的名字,并设置是否Watch这个ZNode
- sync(path): 把所有在sync之前的更新操作都进行同步,达到每个请求都在半数以上的ZooKeeper Server上生效。path参数目前没有用
- setAcl(path, acl): 设置指定ZNode的Acl信息
- getAcl(path): 获取指定ZNode的Acl信息
三、Zookeeper用户配置管理服务
例如,现在有一个服务A,服务器有M台,客户端有N个。
服务器有一个列表,存在Zookeeper的某个ZNode上。客户端先访问Zookeeper,拿到服务端列表,存在本地,然后根据某种策略,每次选择一个服务器来访问。
服务器启动的时候,向Zookeeper的这个节点注册,将自己加入到服务器列表中。所有服务器接收Zookeeper服务器的心跳信号,如果心跳信号失败达到一定次数,这台服务器就会被从列表中摘除。
客户端可以watch某个节点,当街点内容发生改变时,Zookeeper会调用回调函数通知客户端,服务器列表发生改变,请更新。(但是这个watch是怎么实现的?还不太清楚。)
用这种机制来保证,在没有人工干预的时候,也可以自动将不可用的服务器下掉,或者新增服务器。
- 了解ZooKeeper
- 了解zookeeper
- 了解ZooKeeper
- 了解Zookeeper
- 了解zookeeper-续
- Otter(二)---了解zookeeper
- Zookeeper初步了解
- 了解运行kafka&&zookeeper(一)
- Zookeeper你应该了解基础知识
- Zookeeper你应该了解基础知识
- zookeeper(一)———>>>>>zookeeper的最简单了解
- Zookeeper那些事之初步了解zookeeper知识
- Zookeeper 学习(粗略,仅供了解)
- 关于ETCD和Zookeeper的一些简单了解(转)
- 5分钟让你了解 ZooKeeper 的原理
- zookeeper
- zookeeper
- zookeeper
- Poj 3905 Perfect Election【2-SAT-------Tarjan强连通】
- android 显示/隐藏 view
- 不用加减乘除做加法
- 【JAVA源码分析——Java.lang】包装类源码分析
- 3 hbase基础知识
- 了解ZooKeeper
- 左右滚动jquery 插件 swiper
- ahoi2005 lane 航线规划
- 226. Invert Binary Tree 翻转二叉树
- 17. Letter Combinations of a Phone Number
- 详细解读Jquery各Ajax函数:$.get(),$.post(),$.ajax(),$.getJSON()
- 运动目标跟踪(一)--搜索算法预测模型之KF,EKF,UKF
- 生成全排列示例
- Android UI之switch的thumb与track属性定制自己的switch