IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    《Apache Zookeeper 官方文档》-3 快速指南:使用zookeeper来协调分布式应用

    softliumin发表于 2016-09-05 16:32:08
    love 0

    原文链接

    本节包含信息可以让你快速入门zookeeper。它主要针对想尝试使用zookeeper的开发者,并包含一个ZooKeeper单机服务器的安装说明,并且可以用一些命令来验证它的运行,以及简单的编程实例。最后,为了考虑到方便性,有一些复杂的安装部分,例如运行集群式的部署安装,优化事务日志将不在本文档中说明。对于商业部署的完整说明,请参阅管理员指南。

    一:前提准备条件

    请看下管理员指南中的  System Requirements 。

    二:下载

    从Apache 镜像里面下载最近的一个稳定版本ZooKeeper 。

    三:单机配置

    在单机模式中配置一个ZooKeeper服务器是非常简单的。一个JAR文件里包含了这个服务,安装需要创建一个配置文件。

    一旦你下载了一个稳定版的ZooKeeper,解压它并用cd命令进入root目录

    你需要配置一个文件来启动ZooKeeper,下面有个例子,创建一个文件conf/zoo.cfg:

     

    tickTime=2000
    dataDir=/var/lib/zookeeper
    clientPort=2181
    

    可以用任何应用程序打开conf/zoo.cfg。并且可以通过改变 dataDir的值来指定一个新的目录。每个字段的含义如下:

    • tickTime:是zookeeper的最小时间单元的长度(以毫秒为单位),它被用来设置心跳检测和会话最小超时时间(tickTime的两倍)
    • dataDir:用来配置服务器存储数据快照的目录,除非特别配置说明,事务日志也会被存储到这个目录。
    • clientPort:用来配置监听客户端的连接的端口。

    当这些都配置好之后,就可以使用如下命令启动zookeeper:

    bin/zkServer.sh start

    Zookeeper的日志使用了log4j,更多细节信息请查看zookeeper程序指南中的Logging章节,

    你可以从控制台看到日志信息,或者从log4j的配置的日志文件中查看日志。 这一小节,主要讲了如何启动单机模式的zookeeper。在这里没有使用集群的设置,一旦ZooKeeper 进程出现故障,服务就会终止,这对于大多数时候的开发环境是没问题的,但想要运行以集群的方式来运行ZooKeeper ,请查看Running Replicated ZooKeeper。

    四:Zookeeper的存储管理

    对于长时间运行的生产系统 ,ZooKeeper存储必须要经常维护(dataDir和日志)。如果想了解更多细节请看maintenance章节。

    五:连接Zookeeper

    一旦Zookeeper运行起来,你可以有多种方式来连接它: java: c: 一旦你连接上Zookeeper你会看到下面这些信息:

    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

    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

    从这里,你可以尝试一些简单的命令来了解这个命令行接口。首先,开始通过发一行命令,如ls,

    [zkshell: 8] ls / [zookeeper]

    接下来,创建一个新的znode通过运行创建/ zk测试我的数据。这将创建一个新的znode和同事字符串“数据”节点。您应该看到

    [zkshell: 9] create /zk_test my_data

    Created /zk_test

    发出另一个ls /命令的目录是什么样子

    [zkshell: 11] ls /

    [zookeeper, zk_test]

    现在注意到这个zk_test目录已经被创建,

    接下来我们还通过set命令来改变zk_test的数据,如下所示:

    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

    (我们可以在set命令执行之后来使用get来查正式数据已经改变) 最后让我们删除这个节点:

    [zkshell: 16] delete /zk_test

    [zkshell: 17] ls /

    [zookeeper] [zkshell: 18]

     

    六:编程

    ZooKeeper 有C语言和java两个版本 ,他们在功能上是等同的。C语言版本有2个不同点,单线程和多线程。这些差异仅仅在消息循环时候体现出来。更多细节,请查看Zookeeper编程指南中的的变成案例(简单的代码,却使用不同的APIS)。

    七:集群模式运行

    八:其他优化

    cookie.setValue(ckv);
    cookie.setMaxAge(2592000);
    cookie.setPath(“/”);
    resp.addCookie(cookie);
    break;

    原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 《Apache Zookeeper 官方文档》-3 快速指南:使用zookeeper来协调分布式应用




沪ICP备19023445号-2号
友情链接