ZooKeeper 開始向导
  • 開始:用zookeeper协调分布式程序
    • 单例操作
    • 管理zookeeper存储
    • 连接zookeeper
    • 执行zookeeper
    • 以复制模式执行zookeeper
    • 其他优化
Getting Started:通过zookeeper协调分布式程序
这份文档包括了让你高速開始使用zookeeper的帮助信息。

文章主要是针对0基础想尝试使用zookeeper的开发人员,当中包括了一些简单的样例。仅用一台zookeeperserver,一些命令确认server正在执行,一个简单的程序样例。

文章最后,为了方便,也有一些内容考虑到一些相对复杂些的样例。列如,以复制模式部署,优化事务。

可是假设想运用到商业项目中。请參阅 ZooKeeper
Administrator's Guide
.


单例操作
以单例模式启动zookeeperserver是简单的。zookeeper服务包括一个jar文件和一些配置。
启动zookeeper你首先须要一份配置文件,在下载的文件文件夹conf/zoo.cfg:
tickTime=2000 dataDir=/var/lib/zookeeper clientPort=2181
你能够任意命名这个文件的名字,可是为了描写叙述的清楚我们就叫它 conf/zoo.cfg. 假如已经存在dataDir文件夹请改变dataDir的值。以下是对每个字段意义的介绍
tickTime
zookeeper用到的时间单位是毫秒。

这个时间好比是zookeeper的心跳时间,是最小会话单元的超时时间范围是这个时间的2倍。

dataDir
这个文件夹是存储内存中数据快照的位置,除非你特别说明,更新数据事物的log也在这个位置。
clientPort
client连接监听port。你须要创建一个配置文件。启动ZooKeeper:bin/zkServer.sh start
ZooKeeper 的日志记录是通过log4j — 很多其它关于日志的解说请看log4j官网。这里介绍的启动zookeeper是以单例模式。

假如进程执行失败,zookeeper服务就会挂掉。单例模式启动对于开发环境来说是最好的。假设想已复制模式启动请看Running
Replicated ZooKeeper
.

Managing ZooKeeper Storage
对于长时间执行在生产环境的zookeeper服务,存储必须被额外的管理(dataDir and logs),关于这些请看maintenance
Connecting to ZooKeeper
假设zookeeper已经执行,你就能够通过以下几种选择进行连接
  • Java: Use

    bin/zkCli.sh -server 127.0.0.1:2181
    

    This lets you perform simple, file-like operations.

  • C: compile cli_mt (multi-threaded) or cli_st (single-threaded) by running make
    cli_mt or make cli_st in
    the src/c subdirectory in the ZooKeeper sources. See the README contained within src/c for full details.

    You can run the program from src/c using:

    LD_LIBRARY_PATH=. cli_mt 127.0.0.1:2181
    

    or

    LD_LIBRARY_PATH=. cli_st 127.0.0.1:2181
    

    This will give you a simple shell to execute file system like operations on ZooKeeper.

Once you have connected, you should see something like:

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 ,这将返回client能够执行的命令列表
例如以下:
[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
create path data acl
stat path [watch]
listquota path
history
setAcl path acl
getAcl path
sync path
redo cmdno
addauth scheme auth
delete path [version]
deleteall path
setquota -n|-b val path

你能够尝试一些简单的命令来了解这个简单的命令行.
First, start by issuing the list command, as in ls, yielding:
[zkshell: 8] ls /[zookeeper]
接下来。创建一个咋弄的通过执行create /zk_test my_data.这个会创建一个新的anode和与这个anode关联的字符串数据”my_data” ,你能够看到以下的执行结果:
[zkshell: 9] create /zk_test my_data
Created /zk_test

通过执行 ls / 命令会看到展现当前的文件夹情况:
[zkshell: 11] ls /
[zookeeper, zk_test]

注意。这个zk_test文件夹已经被创建。

你能够确认下和这个节点关联的数据通过执行get命令。例如以下:

[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

我们也能够改变和zk_test关联的数据通过set命令,例如以下:
[zkshell: 14] set /zk_test junk
cZxid = 5
ctime = Fri Jun 05 13:57:06 PDT 2009
mZxid = 6
mtime = Fri Jun 05 14:01:52 PDT 2009
pZxid = 5
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0
dataLength = 4
numChildren = 0
[zkshell: 15] get /zk_test
junk
cZxid = 5
ctime = Fri Jun 05 13:57:06 PDT 2009
mZxid = 6
mtime = Fri Jun 05 14:01:52 PDT 2009
pZxid = 5
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0
dataLength = 4
numChildren = 0

(注意我们在设置zk_test的数据后又执行了get 
命令,数据的确改变了)。

最后通过delete 删除zk_test这个节点:

[zkshell: 16] delete /zk_test
[zkshell: 17] ls /
[zookeeper]
[zkshell: 18]

获取很多其他其他内容。请看Programmer's Guide

Programming to ZooKeeper

ZooKeeper has a Java bindings and C bindings. They are functionally equivalent. The C bindings exist in two variants: single threaded and multi-threaded. These differ only
in how the messaging loop is done. For more information, see the Programming Examples in the
ZooKeeper Programmer's Guide
 for sample code using of the different APIs.

复制模式执行zookeeper
执行zookeeper以单例模式对于评估測试开发是非常方便。可是在正式环境你应该以复制模式执行。每一个zookeeperserver都有一份相同的配置文件。

这个文件和上面介绍单例模式使用的配置文件和类似。仅仅是有一点小小的不同,例如以下:

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是用来定义zookeeper连接到leader的超时时间,属性syncLimit 限制一个leader过时时间。对于这两种超时时间,你也能够指定用tickTime的时间单位计量。比如。initLimit是5
ticks,每一个tick是2000毫秒,也就是10秒。
属性server.X 列出了zookeeper服务的组成。

当server启动的时候,通过寻找在数据文件夹的myid文件知道是哪台server。这个文件含有以ASCII编码的server编号。

最后,注意在每一个server名后的两个port号: " 2888" and "3888”.通过这些port能够彼此连接。比如,一个彼此连接是必的当按顺序更新数据时。

尤其在zookeeperserver依次连接到leader时候。当一个新的leader诞生时,小弟们会通过这个port号利用tcp协议连接到leader。由于默认leader也用tcp协议。我们必需要求另外一个port用于选举leader。就是属性server的第二个port号。


注意
假如你想在一台机器上进行多个zookeeper服务測试。须要指出唯一的集群名localhost和那些leader选举port(比如2888:3888,
2889:3889, 2890:3890 )。隔离各个dataDir文件夹和不同的port号也是必须的。

(在这个复制模式执行的样例里,每一个执行在单一的机器都有一个配置文件)


其他优化
有其他的配置參数能够提高性能:There are a couple of other configuration parameters that can greatly increase performance:
为了降低等待和高速更新,它是重要的有个事物log文件夹。默认事物log文件是和数据快照和myid文件放在一起。属性dataLogDir能够指名别的地方

 
Last Published: 08/07/2014 04:18:26
Copyright © 2008-2013 The Apache Software Foundation.

Apache ZooKeeper Getting Started Guide 翻译的更多相关文章

  1. 转载:ZooKeeper Programmer's Guide(中文翻译)

    本文是为想要创建使用ZooKeeper协调服务优势的分布式应用的开发者准备的.本文包含理论信息和实践信息. 本指南的前四节对各种ZooKeeper概念进行较高层次的讨论.这些概念对于理解ZooKeep ...

  2. 【Apache ZooKeeper】理解ZooKeeper中的ZNodes

    理解ZooKeeper中的ZNodes 翻译自:http://zookeeper.apache.org/doc/r3.1.2/zookeeperProgrammers.html ZooKeeper中的 ...

  3. Download and Install Apache Zookeeper on Ubuntu

    http://www.techburps.com/misc/download-and-install-apache-zookeepr/36 In previous article of this Bi ...

  4. ZooKeeper Getting Started Guide

    http://zookeeper.apache.org/doc/trunk/zookeeperStarted.html What is ZooKeeper? ZooKeeper is a centra ...

  5. ZooKeeper Administrator's Guide A Guide to Deployment and Administration(吃别人嚼过的馍没意思,直接看官网资料)

    Deployment System Requirements Supported Platforms Required Software Clustered (Multi-Server) Setup ...

  6. Apache ZooKeeper 服务启动源码解释

    转载:https://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper-code/ 本文首先讲解了 Apache ZooKeeper 服 ...

  7. windows下安装apache zookeeper

    ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件,提供的功 ...

  8. 在 Linux 多节点安装配置 Apache Zookeeper 分布式集群

    规划: 三台物理服务器就形成了(法定人数).对于高可用性集群,您可以使用高于3的任何奇数.例如,如果设置5台服务器,则集群可以处理两个故障节点等. 物理服务器需要开启的端口 2888 , 3888 和 ...

  9. Apache ZooKeeper原理剖析及分布式理论名企高频面试v3.7.0

    概述 **本人博客网站 **IT小神 www.itxiaoshen.com 定义 Apache ZooKeeper官网 https://zookeeper.apache.org/ 最新版本3.7.0 ...

随机推荐

  1. Win10 + YOLOv3 环境配置,编译,实现目标检测----How to compile YOLOv3 on Windows

    其他比较好的参考链接: 环境配置: 环境配置的最终图片列表:https://blog.csdn.net/shanglianlm/article/details/80322718 视频讲解YOLOv1: ...

  2. python_webApp

    提高开发效率:当更改代码后,不重启服务器就能使用新效果 参考链接:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df ...

  3. Java接口源码--System和应用程序进程间通信

    本文參考<Android系统源代码情景分析>.作者罗升阳 一.架构代码: ~/Android/frameworks/base/core/java/android/os ----IInter ...

  4. json的键为变量而不是字符串时,怎么写?

    看栗子 /* 首先你创建了一个window的属性叫b, 并给它赋值为'cccddd' * 然后你创建了一个对象"a", 声明了一个它的属性叫b, 并且给b赋值为6 * 注意第一行的 ...

  5. legend---一、如何实现js跳转到php页面

    legend---一.如何实现js跳转到php页面 一.总结 一句话总结:url还是同样的方式,只不过注意引号内嵌的时候的转义. 代码: onClick="javascript:if(con ...

  6. BZOJ 1579 道路升级 Dijkstra

    思路: 这道题 不能把所有边都建出来 会MLE的!!! oh gosh 其实不建所有的边 用的时候再调就行了-.(也没啥区别) //By SiriusRen #include <queue> ...

  7. spring security oauth2 架构---官方

    原文地址:https://projects.spring.io/spring-security-oauth/docs/oauth2.html Introduction This is the user ...

  8. SQLHelper--java类

    package richard; import java.beans.Statement; import java.sql.Connection; import java.sql.DriverMana ...

  9. pigofzhou的巧克力棒

    Description 众所周知,pigofzhou有许多妹子.有一天,pigofzhou得到了一根巧克力棒,他想把这根巧克力棒分给他的妹子们.具体地,这根巧克力棒长为 n,他想将这根巧克力棒折成 n ...

  10. 昼猫笔记 JavaScript -- 作用域技巧!!

    简单理解 var zm = function (x) { var code = 'bb' return code }; 学过js的老哥们都知道,当这样简单的一个函数进入浏览器,浏览器开始解释代码,会将 ...