Skip to content

feixiao/ZooKeeper-Exam

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ZooKeeper-Exam

准备工作

  • 安装部署zookeeper

    • 1: 需要Java运行环境
    • 2: 下载zookeeper-3.4.8.tar.gz,然后解压到/opt
    • 3: 将/opt/zookeeper-3.4.8/conf目录下面的zoo_sample.cfg修改为zoo.cfg
    • 4: 运行bin/zkServer.sh start,我们以standalone模式运行
  • 编译客户端的C库

    在/opt/zookeeper-3.4.8/src/c目录下面,执行如下命令

    • 1: ./configure
    • 2: make
    • 3: make install
    • 4: 将动态库的路径/usr/local/lib添加到/etc/ld.so.conf文件中, 即添加如下内容: /usr/local/lib
    • 5:使修改生效/sbin/ldconfig -v
  • 注: zookeeper.h有详细的参数说明(位置/usr/local/include/zookeeper),看不懂可以参考里面的说明

  • 背景说明参考文章
  • 在ClusterMonitor目录下面执行make,编译生成monitor程序。
  • 启动多个monitor程序,然后杀死master进程,我们可以看到新的Master产生。
  • 背景说明参考文章

  • 在NameService目录下面执行make,编译生成nameservice程序。

  • 启动多个nameservice程序,如下:

      服务提供者:
          ./nameservice -m provider -n query_bill 
      服务消费者:
          ./nameservice -m consumer -n query_bill 
      服务监控者:
          ./nameservice -m monitor -n query_bill 
          
      这样服务提供着发生变化的时候,服务消费者能够获取到通知。
    
  • 背景说明参考文章

  • 在Notify目录下面执行make,编译生成notify程序。

  • 启动多个notify程序,如下:

      ./notify -p /Notify
      然后使用zkCli.sh往节点/Notify写入数据
      [zk: localhost:2181(CONNECTED) 4] set /Notify 1.0
      
      notify会获取到数据的变化。
    
  • 背景说明参考文章

  • 在Lock目录下面执行make,编译生成mylock程序。

  • 启动两个mylock程序,如下:

      ./mylock
      输出
          create path /Lock successfully!
          create path /Lock successfully!
          get lock of /Lock.
          self path is /Lock/lock-0000000000.
          do something....
    
      ./mylock
      create path /Lock successfully!
      #当上面的程序退出,输出如下内容
      get lock of /Lock.
      self path is /Lock/lock-0000000001.
      do something....
    
  • 背景说明参考文章

  • 在Queue目录下面执行make,编译生成myqueue程序。

  • 启动两个myqueue程序,如下

       ./myqueue -p /Queue -m push -v Hello
      输出:
          create path /Queue successfully!
          create path /Queue successfully!
          push:Hello
       
      ./myqueue -p /Queue -m push -v World
      输出:
          create path /Queue successfully!
          push:World
    
      ./myqueue -p /Queue -m pop
       输出:
          queue-0000000001:queue-0000000001
          queue-0000000001:queue-0000000000
          pop:Hello
          
      ./myqueue -p /Queue -m pop
      输出:
          queue-0000000001:queue-0000000001
          pop:World
    

参考资料

Releases

No releases published

Packages

No packages published

Languages

  • C 70.9%
  • C++ 26.0%
  • Makefile 3.1%