`
greemranqq
  • 浏览: 976960 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

zookeeper windows 入门安装和测试

阅读更多

一、序言

      以下是我对zookeeper 的一些理解:
      zookeeper 作为一个服务注册信息存储的管理工具,好吧,这样说得很抽象,我们举个“栗子”。

      栗子1号:

      假设我是一家KTV的老板,我同时拥有5家KTV,我肯定得时刻监视我KTV 的情况吧,是不是有人打架,或者发生火灾什么的,这时候我会给设置一个视频监控,然后每一家都连接到我的视频监控里面,那么我就可以在家里看到所有KTV 的情况了,如果某一家出现问题,我就能及时发现,并且做出反应。

这个视频监控就相当于zookeeper,每一家的连接,就相当于KTV 的信息。

       

 

二、安装过程

     2.1  http://mirrors.hust.edu.cn/apache/zookeeper/  下载,我的版本是 3.4.6(stable) 稳定

     2.2  解压到 F:\zookeeper-3.4.6 

     3.3  到目录conf 下创建 zoo.cfg 文件,默认就是加载这个文件,文件内容 我直接copy 的sample里面的

          

#zoo.cfg 的内容
#   心跳检查的时间 2秒
tickTime=2000
# 初始化时 连接到服务器端的间隔次数,总时间10*2=20秒
initLimit=10
# ZK Leader 和follower 之间通讯的次数,总时间5*2=10秒 
syncLimit=5
# 存储内存中数据库快照的位置,如果不设置参数,更新事务日志将被存储到默认位置。
dataDir=F:\\zk\\tmp\\zookeeper
# 错误日志的存放位置
dataLogDir=F:\\zk\\logs\\zookeeper

# ZK 服务器端的监听端口
clientPort=2181

 

   上面的说明介绍:http://zookeeper.apache.org/doc/current/zookeeperStarted.html

   然后 cd 到bin 目录下 执行zkServer.cmd 就启动成功了。

   注意:dataDir  和  dataLogDir 目录不会自动创建,得手动创建才能启动。

   可以用netstat -ano|findstr "2181" 看看是否OK。

   也可以用JPS 查看启动的JAVA 进程的情况,会出现这样

   

C:\windows\system32>jps
8068
10040 QuorumPeerMain  // 这东西是zk的东西,源码有介绍
10556 Jps

   也可以用自带客户端命令 :  zkCli.cmd -server 127.0.0.1:2181

   关于JPS的东西,可以自己去JAVA_HOME\bin 目录下去看,里面很多命令。

   

四、JAVA 操作zookeeper :

       上面安装挺简单的,我们来实际操作下:

       4.1  导入依赖:

        

 <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.6</version>
        </dependency>

 

    4.2 JAVA 实现:这里我们简单实现上面的栗子

       

    // 根节点
    public static final String ROOT = "/root-ktv";

    public static void main(String[] args) throws Exception {
        // 创建一个与服务器的连接
        ZooKeeper zk = new ZooKeeper("localhost:2181", 30000, new Watcher() {
            // 监控所有被触发的事件
            public void process(WatchedEvent event) {
                System.out.println("状态:" + event.getState()+":"+event.getType()+":"+event.getWrapper()+":"+event.getPath());
            }
        });
        // 创建一个总的目录ktv,并不控制权限,这里需要用持久化节点,不然下面的节点创建容易出错
        zk.create(ROOT, "root-ktv".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);

        // 然后杭州开一个KTV ,       PERSISTENT_SEQUENTIAL 类型会自动加上 0000000000 自增的后缀
        zk.create(ROOT+"/杭州KTV", "杭州KTV".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT_SEQUENTIAL);

        // 也可以在北京开一个,       EPHEMERAL session 过期了就会自动删除
        zk.create(ROOT+"/北京KTV", "北京KTV".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL);

        // 同理,我可以在北京开多个,EPHEMERAL_SEQUENTIAL  session 过期自动删除,也会加数字的后缀
        zk.create(ROOT+"/北京KTV-分店", "北京KTV-分店".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL_SEQUENTIAL);

        // 我们也可以 来看看 一共监视了多少家的ktv
        List<String> ktvs = zk.getChildren(ROOT, true);
        System.out.println(Arrays.toString(ktvs.toArray()));
        for(String node : ktvs){
            // 删除节点
            zk.delete(ROOT+"/"+node,-1);
        }
        // 根目录得最后删除的
        zk.delete(ROOT, -1);
        zk.close();
    }

 

    zookeeper 的结构图和其他的一些功能,可参考:                                                                                         http://www.blogjava.net/shenh062326/archive/2011/10/29/zookeeper_yuling.html

    

  

 三、zookeeper 伪集群

      上面栗子我们看到,如果我们的监控室也停电了,那不是就监测不到KTV情况了?一般情况下,zk 也是作为分布式部署了,也就是有多台监控,由于监控多了,肯定要有一定为准(比如直播会有一些延迟),就要涉及到选举的算法,这里暂时不介绍,先搭建一个伪集群,因为机器不够,只能再一台机器上模拟搭建,整个过程无非是将上面的一些配置copy 几份,然后配置不同的 地址和端口就行。

     

       3.1  我们将F:\zookeeper-3.4.6\conf\下的zoo.cfg 改成zoo1.cfg,内容改为:

       

# 存储内存中数据库快照的位置,如果不设置参数,更新事务日志将被存储到默认位置。
# 每一个文件路径和下面的对应,zk1 zk2 zk3
dataDir=F:\\zk\\tmp\\zk1
# 错误日志的存放位置
dataLogDir=F:\\zk\\logs\\zk1

# ZK 服务器端的监听端口
# 对应分别:2181  2182  2183
clientPort=2181
# 伪集群 
#2887 是server 之间通讯的,3887 是应用程序通讯的
# 同时加入其他两个服务的地址和端口信息
server.1=127.0.0.1:2887:3887 
server.2=127.0.0.1:2888:3888 
server.3=127.0.0.1:2889:3889 
# 最后在钱文件目录下创建3份,zoo1.cfg,zoo2.cfg,zoo3,cfg 记得改参数

 

   3.2 同时我们将F:\zookeeper-3.4.6\bin\下的 zkServer.cmd 改为zkServer1.cmd,内容加上:

    

set ZOOMAIN=org.apache.zookeeper.server.quorum.QuorumPeerMain
# 读取配置的路径,每个启动服务对应一份
set ZOOCFG=..\conf\zoo1.cfg
# 同理创建3个zkServer1.cmd,zkServer2.cmd,zkServer3.cmd  记得改zoo 1 2 3.cfg

   

   3.3 还得在dataDir 指定目录,也就是F:\\zk\\tmp\\zk1 下创建myid 的文件,内容对应1 2 3 即可。

  这个的数字是唯一的,在1-255 之间,用来表示自身的id(其实我不明白 为啥zk 要这么设计- -!)

 

   3.4 启动3个zkServer1.cmd 就OK了,如果要多服务器配置,只需要要将 3份分开放到不同服务器就OK

   依次启动的时刻有错误信息,因为你启动server1 的时候 2 和 3 没找到,但是后面都启动了 就没问题了。

 

小结:

      1.zookeeper  现在大家都用得比较多,这里也是仅仅介绍下入门知识,linux 上安装区别不打,还是得看具体应用。

      2.关于选举、一致性 和一些其他的东西,慢慢再写!

      3.有错误,请指出哦~。~ 感激。

 

 

参考资料:

官网的:

http://zookeeper.apache.org/doc/trunk/zookeeperStarted.html

API 文档:

http://zookeeper.apache.org/doc/r3.4.6/api/

别人介绍的一些流程:

http://cailin.iteye.com/blog/2014486

常用的场景:

http://nileader.blog.51cto.com/1381108/1040007

      

   

  • 大小: 22.9 KB
分享到:
评论

相关推荐

    淘宝开源timetunnel入门文档

    我们可以使用 Ptailfile 发送消息测试和 Java 代码订阅测试,以验证 TimeTunnel 的功能是否正常。 TimeTunnel 是一个功能强大且高效的分布式消息队列系统,通过本文档,我们可以了解 TimeTunnel 的基本概念、环境...

    专栏大数据中windows下搭建kafka集群中需要用到的安装包

    在Windows环境下搭建Kafka集群可以帮助开发者在本地环境中快速测试和开发相关的流处理应用。以下是一份详细的步骤指南,帮助你了解如何在Windows上安装并运行Kafka集群。 1. **获取和解压Kafka** 首先,你需要从...

    zooInspector-3.4.8

    4. **README** 文件:提供了快速入门指南,包括如何启动和配置zooInspector,以及可能遇到的问题和解决方案。 5. **LICENSE** 文件:描述了zooInspector的许可协议,通常为Apache License 2.0,允许自由使用和分发。...

    ElasticSearch入门篇.docx

    ### ElasticSearch 入门知识点详解 #### 一、ElasticSearch 概览 **1.1 ElasticSearch 的使用案例** ElasticSearch 在多个领域有着广泛的应用案例,这充分证明了其在大规模数据处理和搜索方面的强大能力。 - **...

    Hadoop开发者入门专刊.pdf

    #### Windows和Linux上安装Hadoop教程 - **在Windows上安装Hadoop**:由于Hadoop原生是为Linux设计的,因此在Windows上的安装可能会遇到一些额外的步骤。主要包括安装JDK、配置环境变量、设置Hadoop配置文件等。 - *...

    后端开发学习指南:从入门到精通的路径规划

    3. **中间件**(如 RabbitMQ、Kafka、ZooKeeper):中间件用于实现应用之间的消息传递和数据同步。了解这些中间件的作用和配置可以极大地提高系统的可扩展性和灵活性。 #### 六、框架与工具 1. **Java 框架**(如 ...

    开源项目-osrg-gobgp.zip

    7. **模拟与测试工具**:内置的gobgpd工具可以模拟BGP环境,帮助开发者测试和验证路由策略。 8. **社区活跃**:作为开源项目,OSRG Gobgp拥有活跃的社区,不断有新的贡献者加入,持续改进和更新软件,保证了项目的...

    faceit_stavrosvl7

    用户管理应用使用Spring框架用Java编写的简单用户管理应用程序入门这些说明将为您提供在本地计算机上运行并运行的项目的副本,以进行开发和测试。 首先,您必须下载并安装zookeeper( ),然后必须下载并安装kafka...

Global site tag (gtag.js) - Google Analytics