分布式服务框架 Zookeeper(三)官方入门指南
入门指南:使用ZooKeeper来协调分布式应用
这篇文档包含了让你快速上手ZooKeeper的信息。主要是针对那些想要试一把ZooKeeper的开发人员,包含了安装一个单一ZooKeeper服务器的简单指令,一些验证ZooKeeper是否运行的简单命令以及一个简单的编程例子。最后,为了方便,还写了一些关于更复杂的安装知识,比如运行一个备份的部署,以及优化事务记录。但是完整的商业部署过程需要参考ZooKeeper管理员指南。
前期条件
系统要求请参考管理手册。
下载
为了获取ZooKeeper的发型版本,请从Apache下载镜像下载一个最新的稳定发型版本。
单机操作
安装一个单机版的ZooKeeper服务器还是挺简单的。服务器包含一个JAR文件,因此安装过程就只包括了创建一个配置。
一旦你下载了一个稳定版的ZooKeeper发行版,将它解压到root下。
为了启动ZooKe,你需要一个配置文件。这里有一个样本,创建一个文件conf/zoo.cfg:
tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181
这个文件可以叫任何名字,但是为了方便起见,我们还是命名为conf/zoo.cfg。改变dataDir的值来指定一个已经存在的(开始是空的)目录。下面解释一下这几个属性:
ticktime:ZooKeeper使用的以milliseconds为单位的基本时间单位。它用于心跳检测,并且最小的会话超时时间是它的两倍。
dataDir:存储内存数据库快照的地方,除非指定,不然事务日志会更新到数据库中。
clientPort:监听客户端连接的接口。
现在你已经创建了一个配置文件了,你可开始启动ZooKeeper了:
bin/zkServer.sh start
这会让你执行一个简单的类似文件的操作。
一旦你连接上了,你会看到如下信息:
Connecting to localhost:2181
log4j:WARN No appenders could be found for logger (org.apache.zookeeper.ZooKeeper). log4j:WARN Please initialize the log4j system properly.
Welcome to ZooKeeper!
JLine support is enabled
[zkshell: 0]
在这个shell中,敲help命令可以获取从客户端执行的命令列表,比如:
[zkshell: 0] help
ZooKeeper host:port cmd args
get path [watch]
ls path [watch]
set path data [version]
delquota [-n|-b] path
quit
printwatches on|off
createpath data acl
stat path [watch]
listquota path
history
setAcl path acl
getAcl path
sync path
redo cmdno
addauth scheme auth
delete path [version]
setquota -n|-b val path
在这里,你可以尝试一些简单的命令从命令行感受一下。首先可以敲ls命令:
[zkshell: 8] ls /
[zookeeper]
接下来,使用create /zk_test my_data命令创建一个新的znode。这会创建一个新的znode,并且与之相关的一个字符串"my_data"。
[zkshell: 9] create /zk_test my_data
Created /zk_test
执行ls /命令来看一下目录是什么样的:
[zkshell: 11] ls /
[zookeeper, zk_test]
注意到现在已经创建了zk_test目录了。
接下来,验证使用get命令来验证一下和znode相关的数据:
[zkshell: 12] get /zk_test
my_data
cZxid = 5
ctime = Fri Jun 05 13:57:06 PDT 2009
mZxid = 5
mtime = Fri Jun 05 13:57:06 PDT 2009
pZxid = 5
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0
dataLength = 7
numChildren = 0
(注意到我们在做了一个get命令之后确实发现应设置了数据了)
最后我们通过delete来删除这个znode
[zkshell: 16] delete /zk_test
[zkshell: 17] ls /
[zookeeper]
[zkshell: 18]
要探索更多请看Programmer's Guide。
ZooKeeper编程
ZooKeeper提供了Java和C语言接口。它们在功能上是一样的。C接口存在两个变种:单线程和多线程的。它们的差别仅仅在于消息循环是如何完成的。更多信息参见Programming Examples in the ZooKeeper Programmer's Guide。
运行备份(Replicated)的ZooKeeper
运行单机版本的ZooKeeper在评估、开发以及测试的时候尚可。但是在生产环境中,你应该以集群的方式运行ZooKeeper。运行相同应用的一组服务器称之为quorum,在集群模式下,在quorum中的所有服务器都有相同的配置文件。
注意(敲黑板)
在集群模式下,最少需要3台服务器,并且强烈推荐你采用奇数台服务器。如果你仅仅有两台服务器,那么当其中的一台机器失效的时候,这里没有足够的机器来构成quorum中的大多数。两台服务器本质上要比单一服务器的稳定性差,因为这里有两个失效点。
集群模式的conf/zoo.cfg和单一版本的类似,但是还有有一些不同。下面是一个示例:
tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
server.1=zoo1:2888:3888
server.2=zoo2:2888:3888
server.3=zoo3:2888:3888
新项,initLimit是用来限制quorum中的服务器连接到一个leader的超时时间。配置项syncLimit限制了一个服务器可以和leader断开多久。
有了这些超时限制,你用tickTime这个时间单位来指定超时时间。在本例中,initLimit的超时时间是5个tick,也就是10s。
server.X的配置项列出了组成ZooKeeper服务的服务器。当一个服务开启的时候,它知道从那台服务器中的data directory中寻找myid文件。这个文件以ASCII码包含了服务器号码。
最后,注意到每个服务器名后面有两个端口号"2888"和"3888"。同类使用前一个端口号和其他同类相连。这种连接在同类之间进行交互是十分必要的,例如,同意更新的顺序。更多的,一个ZooKeeper服务器使用这个端口号来连接follows和leader。当一个新的leader选出来了后,一个follower会使用这个端口号开启对leader的TCP连接。,我们现在还需要另一个端口进行leader选举。即server项中的第二个端口号。
注意
如果你想要在一台机器上测试多个服务器的话,指定服务器的名字为localhost以及唯一的quorum和leader选举端口(即,2888:3888,2889:3889,2890:3890)对于服务器配置文件中的每个server.X配置项。当然,还要指定单独的dataDir和不同的客户端端口(在上面的集群例子中,运行在单个localhost主公,你仍需要3个配置文件)。
请注意在单台机器上安装多个服务器并不会有任何冗余的效果。如果机器宕机了,所有的ZooKeeper服务器都会离线。完全冗余的情况需要每个台服务器都安装在独立的机器上。必须是完全物理分隔的机器。在同一台物理机器上的多个虚拟机中仍然会有故障风险。
其他优化措施
这里有一些其他的可极大提高性能的配置参数:
为了是更新的延迟降低,必须要有一个目标事务日志目录。默认的事务日志是放在和数据快照和myid文件相同的目录中。dataLogDir参数指定用一个不同的目录来用于事务日志。
分布式服务框架 Zookeeper(三)官方入门指南的更多相关文章
- 分布式服务框架 Zookeeper(转)
分布式服务框架 Zookeeper -- 管理分布式环境中的数据 Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题 ...
- 分布式服务框架 Zookeeper — 管理分布式环境中的数据
本节本来是要介绍ZooKeeper的实现原理,但是ZooKeeper的原理比较复杂,它涉及到了paxos算法.Zab协议.通信协议等相关知识,理解起来比较抽象所以还需要借助一些应用场景,来帮我们理解. ...
- 大数据 --> 分布式服务框架Zookeeper
分布式服务框架 Zookeeper Zookeeper系列 分布式服务框架 Zookeeper -- 管理分布式环境中的数据
- 分布式服务框架Zookeeper
协议介绍 zookeeper协议分为两种模式 崩溃恢复模式和消息广播模式 崩溃恢复协议是在集群中所选举的leader 宕机或者关闭 等现象出现 follower重新进行选举出新的leader 同时集群 ...
- 分布式服务框架 Zookeeper -- 管理分布式环境中的数据
转自:http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/index.html Zookeeper 分布式服务框架是 Apa ...
- 分布式服务框架 Zookeeper -- 管理分布式环境中的数据(转载)
本文转载自:http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/ Zookeeper 分布式服务框架是 Apache Had ...
- 分布式服务框架 Zookeeper -- 管理分布式环境中的数据--转载
原文:http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/ Zookeeper 分布式服务框架是 Apache Hadoop ...
- 【Zookeeper】分布式服务框架 Zookeeper -- 管理分布式环境中的数据
Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务.状态同步服务.集群管理.分布式应用配置项的管理 ...
- 分布式服务框架 Zookeeper(一)介绍
一.概述 ZooKeeper(动物园管理员),顾名思义,是用来管理Hadoop(大象).Hive(蜜蜂).Pig(小猪)的管理员,同时Apache Hbase.Apache Solr.LinkedIn ...
- 【转】分布式服务框架 Zookeeper -- 管理分布式环境中的数据
Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务.状态同步服务.集群管理.分布式应用配置项的管理 ...
随机推荐
- Exercise03_01
import javax.swing.JOptionPane; public class TheDirection { public static void main(String[] args){ ...
- Missing iOS Distribution signing identity解决方案
相信很多朋友跟我遇到相同的问题,之前iOS发布打包的证书没问题,现在莫名其妙的总是打包失败,并且报如下错误 第一反应,是不是证书被别人搞乱了.于是去Developer Member Center,把所 ...
- NSPredicate 谓词总结 数组过滤 模糊匹配
NSPredicate 用于指定过滤条件,主要用于从集合中分拣出符合条件的对象,也可以用于字符串的正则匹配. NSPredicate常用方法介绍 1.创建NSPredicate(相当于创建一个过滤条件 ...
- 移植u-boot-2012.4到Tiny6410_1G_Nandflash
Uboot-2012.4的启动流程: 自从Uboot-2010后的Uboot在文件结构和启动流程方面都有非常大的改变,所以移植Uboot-2012.4的时候还是费了我不少时间, 首先在编译Uboot的 ...
- Mysql 按条件排序查询一条记录 top 1 对应Mysql的LIMIT 关键字
项目中需要每次查询一个表中的最新的一条记录,表结构里面有日期字段.只需要显示一条记录. Mysql帮助文档里面的解释 3.6.2. 拥有某个列的最大值的行 任务:找出最贵物品的编号.销售商和价格. 这 ...
- 7zip File: How to Uncompress 7z files on Ubuntu, Debian, Fedora
转:http://www.thegeekstuff.com/2010/04/7z-7zip-7za-file-compression/ Question: How do I uncompress a ...
- NET PROVIDER 连接 Oracle数据库
NET 数据库连接 ORacle http://www.devart.com/ DataDirect http://www.datadirect.com/ Oracle免客户端For . ...
- 云计算之路-阿里云上-十字路口:阿里云SLB故障
2013年7月24日,18:20~18:50左右,处于阿里云云服务最前沿的SLB(负载均衡)出现故障,造成了网站不能正常访问(由于是最前沿,这次连502也看不到了). 在大家对昨日RDS故障带来的麻烦 ...
- 小米miui系统怎么关闭文件管理里的热门视频和表情?
小米miui系统怎么关闭文件管理里的热门视频和表情? 打开"文件管理"后,切换到"手机"选项卡. 然后,点击屏幕右上角的一排竖点. . 在弹出的菜单中点击&qu ...
- 梳理caffe代码blob(三)
贯穿整个caffe的就是数据blob: #ifndef CAFFE_BLOB_HPP_ #define CAFFE_BLOB_HPP_ #include <algorithm> #incl ...