当前位置: 首页>编程语言>正文

java获取zookeeper中偏移量 java zookeeper

一. Zookeeper要点

  • zookeeper开放源码的分布式协调服务框架
  • zookeeper功能包括:配置维护域名服务分布式锁组服务等;
  • zookeeper由java开发,需要有Jdk 1.6以上的运行环境支持;
  • zookeeper集群一般需要一、三、五等奇数台服务器2*n+1台);
  • zookeeper核心功能有:文件系统通知机制

二. 安装Java环境

Zookeeper是用Java开发的,所以需要JDK的支持,这里安装JRE即可,JRE安装参考。

$ java -version


三. ZK单机部署

3.1 下载安装ZK

参考 Zookeeper官网地址

# 下载解压
$ wget https://dlcdn.apache.org/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz --no-check-certificate
$ tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz
$ mv apache-zookeeper-3.7.0-bin /usr/local/zookeeper

#删除讨厌的windows的执行文件
$ rm -f /usr/local/zookeeper/bin/*.cmd

3.2 配置环境变量

$ vim /etc/profile
#*********************ZK环境变量******************
export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=$ZOOKEEPER_HOME/bin:$PATH
#*************************************************

$ source /etc/profile #刷新配置

3.3 修改配置文件

$ cd $ZOOKEEPER_HOME
$ cat ./conf/zoo_sample.cfg|grep -v "#"|grep -v "^$" >./conf/zoo.cfg
# 配置文件示例:conf/zoo.cfg
tickTime=2000    #心跳间隔(ms),即2秒
initLimit=10     #初始化超过10个心跳则视为失败
syncLimit=5      #同步最大心跳间隔(超过5个则断开连接)
dataDir=/tmp/zookeeper
clientPort=2181

admin.serverPort=8180  #默认是8080

3.4 启动ZK服务

# 启动
$ zkServer.sh start   

# 查看状态
$ zkServer.sh status  
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: standalone    #单机模式

$ zkServer.sh restart #重启
$ zkServer.sh sop     #停止


四. ZK单机伪集群

4.1 准备工作

# 创建三个工作目录
$ cd $ZOOKEEPER_HOME 
$ mkdir zk2181 zk2182 zk2183

服务标识

IP地址

zookeeper

myid

zookeeper-1

127.0.0.1:2181

server.1

1

zookeeper-2

127.0.0.1:2182

server.2

2

zookeeper-3

127.0.0.1:2183

server.3

3

4.2 创建配置文件

./zk2181/zoo.cfg

# 服务端口号
clientPort=2181

# 客户端每两秒钟发送一次心跳
tickTime=2000

#初始化超过10个心跳则视为失败
initLimit=10

#同步最大心跳间隔(超过5个则断开连接)
syncLimit=5

# 数据目录
dataDir=/usr/local/zookeeper/zk2181

# 日志目录
dataLogDir=/usr/local/zookeeper/zk2181

# 集群配置
# server.A=B:C:D
# A:其中A是一个数字,表示这个是服务器的编号;
# B:是这个服务器的ip地址;
# C:Leader选举的端口;
# D:Zookeeper服务器之间的通信端口。
server.1=localhost:2101:3101
server.2=localhost:2102:3102
server.3=localhost:2103:3103
  • ./zk2181/zoo.cfg为模板,复制./zk2182/zoo.cfg./zk2183/zoo.cfg两个配置文件
$ sed "s/2181/2182/g" ./zk2181/zoo.cfg >./zk2182/zoo.cfg
$ sed "s/2181/2183/g" ./zk2181/zoo.cfg >./zk2183/zoo.cfg

4.3 创建服务器编号

# 与配置文件中「Server.编号」保持一致

$ echo "1">./zk2181/myid
$ echo "2">./zk2182/myid
$ echo "3">./zk2183/myid

4.4 启动集群

$ zkServer.sh --config $ZOOKEEPER_HOME/zk2181 start
$ zkServer.sh --config $ZOOKEEPER_HOME/zk2182 start
$ zkServer.sh --config $ZOOKEEPER_HOME/zk2183 start

4.5 查看集群状态

可以看到Mode: leader(主节点),Mode: follower(从节点)。

$ zkServer.sh --config /usr/local/zookeeper/zk2181 status
$ zkServer.sh --config /usr/local/zookeeper/zk2182 status
$ zkServer.sh --config /usr/local/zookeeper/zk2183 status

4.6 测试故障转移

杀掉leader进程,再次查看集群状态

$ ps -ef |grep zookeeper|grep 2182
$ kill -9 3977  
...
# 再次查看集群状态,主从关系已转移


五. ZK客户端命令

5.1 登录ZK

$ zkCli                            #登录本地
$ zkCli.sh -server localhost:2182  #登录远程

5.2 查看API命令

输入"help"(不存在的命令),会打印API帮助命令

ZooKeeper -server host:port cmd args
 addauth scheme auth
 close
 config [-c] [-w] [-s]
 connect host:port
 create [-s] [-e] [-c] [-t ttl] path [data] [acl]
 delete [-v version] path
 deleteall path
 delquota [-n|-b] path
 get [-s] [-w] path
 getAcl [-s] path
 history
 listquota path
 ls [-s] [-w] [-R] path
 ls2 path [watch]
 printwatches on|off
 quit
 reconfig [-s] [-v version] [[-file path] | [-members serverID=host:port1:port2;port3[,...]*]] | [-add serverId=host:port1:port2;port3[,...]]* [-remove serverId[,...]*]
 redo cmdno
 removewatches path [-c|-d|-a] [-l]
 rmr path
 set [-s] [-v version] path data
 setAcl [-s] [-v version] [-R] path acl
 setquota -n|-b val path
 stat [-w] path
 sync path

5.3 操作示例

# 创建节点(临时节点/序列节点)
$ create /test "hello world"

# 创建顺序节点 自动累加(全局)
$ create  -s /test/code    

# 查看节点
$ get /test

# 修改节点
$ set /test "hello zookeeper"

# 删除节点
$ delete /test

# 查看目录
# ls /test

# 目录统计
$ ls -s /test

# 递归删除(多级目录)
$ deleteall /test

# zk中 watcher是一次性的,触发后立即销毁
# - stat [-w] path 设置watch事件 
# - get [-w] path 设置watch事件 
# 监控节点(在新建的cli端修改节点信息)
$ stat -w /test watch
$ get -w /test watch

5.4 四字命令

  • ZooKeeper 支持某些特定的四字命令(The Four Letter Words)与其进行交互。它们大多是查询命令,用来获取 ZooKeeper 服务的当前状态及相关信息。用户在客户端可以通过 telnet 或 nc 向 ZooKeeper 提交相应的命令。

四字命令

功能描述

conf

3.3.0版本引入的。打印出服务相关配置的详细信息。

cons

3.3.0版本引入的。列出所有连接到这台服务器的客户端全部连接/会话详细信息。包括"接受/发送"的包数量、会话id、操作延迟、最后的操作执行等等信息。

crst

3.3.0版本引入的。重置所有连接的连接和会话统计信息。

dump

列出那些比较重要的会话和临时节点。这个命令只能在leader节点上有用。

envi

打印出服务环境的详细信息。

reqs

列出未经处理的请求

ruok

测试服务是否处于正确状态。如果确实如此,那么服务返回"imok",否则不做任何相应。

stat

输出关于性能和连接的客户端的列表。

srst

重置服务器的统计。

srvr

3.3.0版本引入的。列出连接服务器的详细信息

wchs

3.3.0版本引入的。列出服务器watch的详细信息。

wchc

3.3.0版本引入的。通过session列出服务器watch的详细信息,它的输出是一个与watch相关的会话的列表。

wchp

3.3.0版本引入的。通过路径列出服务器watch的详细信息。它输出一个与session相关的路径。

mntr

3.4.0版本引入的。输出可用于检测集群健康状态的变量列表

示例:

# 查看状态信息
$ echo stat | nc 127.0.0.1 2181

#查看服务器配置
$ echo conf | nc 192.168.0.68 2181

5.6 查看AdminServer

http://x.x.x.x:8180/commands


参考链接


https://www.kancloud.cn/liupengjie/go/745743 【golang-Zookeeper命令行使用】



https://www.xamrdz.com/lan/5kb1923037.html

相关文章: