博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Apache ZooKeeper Getting Started Guide 翻译
阅读量:4938 次
发布时间:2019-06-11

本文共 5145 字,大约阅读时间需要 17 分钟。

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

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

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

可是假设想运用到商业项目中。请參阅 .

单例操作
以单例模式启动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服务就会挂掉。单例模式启动对于开发环境来说是最好的。假设想已复制模式启动请看.

Managing ZooKeeper Storage
对于长时间执行在生产环境的zookeeper服务,存储必须被额外的管理(dataDir and logs),关于这些请看
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:2181log4j: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] helpZooKeeper 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_dataCreated /zk_test
通过执行 
ls / 命令会看到展现当前的文件夹情况
:
[zkshell: 11] ls /[zookeeper, zk_test]
注意。这个zk_test文件夹已经被创建。

你能够确认下和这个节点关联的数据通过执行

get
命令。例如以下:
[zkshell: 12] get /zk_testmy_datacZxid = 5ctime = Fri Jun 05 13:57:06 PDT 2009mZxid = 5mtime = Fri Jun 05 13:57:06 PDT 2009pZxid = 5cversion = 0dataVersion = 0aclVersion = 0ephemeralOwner = 0dataLength = 7numChildren = 0
我们也能够改变和zk_test关联的数据通过
set
命令,例如以下:
[zkshell: 14] set /zk_test junkcZxid = 5ctime = Fri Jun 05 13:57:06 PDT 2009mZxid = 6mtime = Fri Jun 05 14:01:52 PDT 2009pZxid = 5cversion = 0dataVersion = 1aclVersion = 0ephemeralOwner = 0dataLength = 4numChildren = 0[zkshell: 15] get /zk_testjunkcZxid = 5ctime = Fri Jun 05 13:57:06 PDT 2009mZxid = 6mtime = Fri Jun 05 14:01:52 PDT 2009pZxid = 5cversion = 0dataVersion = 1aclVersion = 0ephemeralOwner = 0dataLength = 4numChildren = 0
(注意我们在设置zk_test的数据后又执行了
get
  命令,数据的确改变了)。

最后通过
delete 
删除zk_test这个节点:
[zkshell: 16] delete /zk_test[zkshell: 17] ls /[zookeeper][zkshell: 18]
获取很多其他其他内容。请看. 

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  for sample code using of the different APIs.

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

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

tickTime=2000dataDir=/var/lib/zookeeperclientPort=2181initLimit=5syncLimit=2server.1=zoo1:2888:3888server.2=zoo2:2888:3888server.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 

转载于:https://www.cnblogs.com/llguanli/p/7101955.html

你可能感兴趣的文章
大四中软实习笔记20130301
查看>>
8款功能强大的最新HTML5特效实例
查看>>
行为委托,简洁的 对象关联 编码风格
查看>>
lua 10进制转换成其它进制table表示
查看>>
数据类型
查看>>
ACM基础训练题解4301 城市地平线
查看>>
Python基础练习
查看>>
《Android开发艺术探索》读书笔记 (13) 第13章 综合技术、第14章 JNI和NDK编程、第15章 Android性能优化...
查看>>
python 中的匿名函数lamda和functools模块
查看>>
full gc频繁的分析及解决案例
查看>>
_17NOIP考后随笔
查看>>
centos 7中编译安装httpd-2.4.25.tar.gz
查看>>
第一个一万行程序
查看>>
zeroclipboard复制插件兼容IE8
查看>>
Mina学习之IoHandler
查看>>
电脑配置Java环境变量之后,在cmd中仍然无法识别
查看>>
apue编译方法(收集整合)
查看>>
MAC下安装nginx(转载)
查看>>
leetcode 572. 另一个树的子树(Subtree of Another Tree)
查看>>
慎用preg_replace危险的/e修饰符(一句话后门常用)
查看>>