zookeeper:动物园管理员,分布式系统的协同服务,支持c/java。
协同服务:
配置维护
名字服务
分布式同步
组服务等。
zookeeper
基于内存的, 数据结构都是一样的,是树形结构,类型Linux的文件系统。
zookeepernode1:
/node1..
zookeepernode2:
/node2..
znode:zookeeper节点。
zkServer角色分类:
leader:领导(1个)
follow:跟班(n个)
所有leader和follow之间会通信。
zk有选举机制,如果leader挂掉,就会在follow中重新选举一个leader.
zkClient:
zk的下载与安装:
zk的读写操作具有原子性,和数据库的事务相似。
安装:
1.安装jdk6+.
2.可以在我的百度云中下载或者/官网http://apache.fayea.com/zookeeper/zookeeper-3.4.6/ 下载zookeeper 3.4.6
解压并移动至/usr/wpysoft/目录下。
3.配置环境变量
在/etc/environment文件中配置
ZOOKEEPER_HOME=${zk安装目录}
path=增加${zk安装目录}/bin
source生效。
4.模式配置,和hadoop模式一样有三种模式
独立模式:进程数少
在conf目录下,复制zoo_sample.cfg文件zoo.cfg,编辑
tickTime=2000//心跳周期,单位毫秒,和leader通信
dataDir=存放zk数据的目录
clientPort=server提供给客户端连接的端口号
伪分布模式:
完全分布式:
[${zk_home}/conf/zoo.cfg]
tickTime=2000
initLimit=5
syncLimit=2
//server.n=host:port1:port2,数字n必须是myid中的值
//port1:leader端口,作为leader时,供follower连接的端口
//port2:选举端口,选举leader时供其他follower连接的端口
server.1=s1:2888:3888
server.2=s2:2888:3888
server.3=s3:2888:3888
注:zk处理集群故障的算法是2n + 1,最好在奇数机器数部署
集群失效的条件:
半数节点挂掉。
多于半数服务节点在线,就ok.
集群模式-标识自己
[${zk_datadir}/myid]
//内容只有一行,数字,介于1~255
140
新建一个文件,在目录zk_datadir下,创建文件myid,内容为一个数字。
在每个节点配置myid和节点端口
server.1=s1:2888:3888
server.2=s2:2888:3888
server.3=s3:2888:3888
5.启动zk
在zk_home/bin目录下启动zk.
zkServer.sh start
如果有节点未启动,会报错
zkServer.sh status 查看本节点是领导还是跟班。在data_dir中能看日志文件zookeer.out文件
nc(netcat,网络会话)指令用法:
安装netcat指令包,nc --help检查如果没有安装nc指令包。
地址:http://sourceforge.net/projects/netcat/files/netcat/0.7.1/netcat-0.7.1-1.i386.rpm/download
安装即可。
rpm -ivh xinetd-2.3.14-20.el5_10.x86_64.rpm
rpm -ivh telnet-server-0.17-41.el5.x86_64.rpm
netcat-0.7.1-1.i386.rpm
1.网络会话通信与文件传输,和serverSocket/socket差不多:
server端:nc + 监听+开放监听的端口号
eg:nc -l 1234
client端:nc+ 服务器端ip+服务器端开放的监听端口号
eg:nc s0 1234
Ctrl+D结束输入。
传输文件
服务端:
nc -l 1234 > aa.txt (把接收到的信息重新向输出到文本中)
客户端
nc s0 1234 < 测试文件.txt (把待传输的文件重定向输入)
最后就可以在aa.txt中查看到 测试文件.txt中内容。
2.端口扫描:
可以扫描远程主机开放的端口
通过客户端脚本zkCli.sh连接到服务器,常用的指令使用
[...]ls / //列出zk中包含的内容
[...]create /node1 helloworld //创建/node1节点并指定
关联字符串
[...]get /node1 //查询节点数据
[...]set /node1 howareyou //向节点写入数据
[...]delete /node1 //删除节点
[...]ls / //列出根节点
zookeeper API:
1.创建Java工程
2.引入jar包
3.调用api
4.临时性节点不能有孩子
acl: access control list:访问控制列表
Perms类:里面有对列表进行创建,删除,修改节点的权限。、
在创建列表时需要传入ACL参数,不必去new,可以调用Ids类提供的静态属性OPEN_ACL_UNSAFE
zk = new ZooKeeper(config, sessionTimeout, this);
Stat stat = zk.exists(root, false);
if(stat == null){
// 创建根节点
zk.create(root, new byte[0], ZooDefs.Ids.OPEN_ACL_UNSAFE,CreateMode.PERSISTENT);
}
删除节点:
zk.delete(“节点路径”,节点的版本号);
如果给出的版本号和节点的版本号不一致,那么会抛出异常,如果不检查版本号,给版本号为-1.
ZooKeeper四字命令:
参考:http://blog.csdn.net/shatelang/article/details/7596007
Watch 观察者
zk事件激活是一次性触发激活的。
调用观察者可以通过zk.getXXX(调用观察者)再setXXX(触发事件)来进行。
协同服务:
配置维护
名字服务
分布式同步
组服务等。
zookeeper
基于内存的, 数据结构都是一样的,是树形结构,类型Linux的文件系统。
zookeepernode1:
/node1..
zookeepernode2:
/node2..
znode:zookeeper节点。
zkServer角色分类:
leader:领导(1个)
follow:跟班(n个)
所有leader和follow之间会通信。
zk有选举机制,如果leader挂掉,就会在follow中重新选举一个leader.
zkClient:
zk的下载与安装:
zk的读写操作具有原子性,和数据库的事务相似。
安装:
1.安装jdk6+.
2.可以在我的百度云中下载或者/官网http://apache.fayea.com/zookeeper/zookeeper-3.4.6/ 下载zookeeper 3.4.6
解压并移动至/usr/wpysoft/目录下。
3.配置环境变量
在/etc/environment文件中配置
ZOOKEEPER_HOME=${zk安装目录}
path=增加${zk安装目录}/bin
source生效。
4.模式配置,和hadoop模式一样有三种模式
独立模式:进程数少
在conf目录下,复制zoo_sample.cfg文件zoo.cfg,编辑
tickTime=2000//心跳周期,单位毫秒,和leader通信
dataDir=存放zk数据的目录
clientPort=server提供给客户端连接的端口号
伪分布模式:
完全分布式:
[${zk_home}/conf/zoo.cfg]
tickTime=2000
initLimit=5
syncLimit=2
//server.n=host:port1:port2,数字n必须是myid中的值
//port1:leader端口,作为leader时,供follower连接的端口
//port2:选举端口,选举leader时供其他follower连接的端口
server.1=s1:2888:3888
server.2=s2:2888:3888
server.3=s3:2888:3888
注:zk处理集群故障的算法是2n + 1,最好在奇数机器数部署
集群失效的条件:
半数节点挂掉。
多于半数服务节点在线,就ok.
集群模式-标识自己
[${zk_datadir}/myid]
//内容只有一行,数字,介于1~255
140
新建一个文件,在目录zk_datadir下,创建文件myid,内容为一个数字。
在每个节点配置myid和节点端口
server.1=s1:2888:3888
server.2=s2:2888:3888
server.3=s3:2888:3888
5.启动zk
在zk_home/bin目录下启动zk.
zkServer.sh start
如果有节点未启动,会报错
zkServer.sh status 查看本节点是领导还是跟班。在data_dir中能看日志文件zookeer.out文件
nc(netcat,网络会话)指令用法:
安装netcat指令包,nc --help检查如果没有安装nc指令包。
地址:http://sourceforge.net/projects/netcat/files/netcat/0.7.1/netcat-0.7.1-1.i386.rpm/download
安装即可。
rpm -ivh xinetd-2.3.14-20.el5_10.x86_64.rpm
rpm -ivh telnet-server-0.17-41.el5.x86_64.rpm
netcat-0.7.1-1.i386.rpm
1.网络会话通信与文件传输,和serverSocket/socket差不多:
server端:nc + 监听+开放监听的端口号
eg:nc -l 1234
client端:nc+ 服务器端ip+服务器端开放的监听端口号
eg:nc s0 1234
Ctrl+D结束输入。
传输文件
服务端:
nc -l 1234 > aa.txt (把接收到的信息重新向输出到文本中)
客户端
nc s0 1234 < 测试文件.txt (把待传输的文件重定向输入)
最后就可以在aa.txt中查看到 测试文件.txt中内容。
2.端口扫描:
可以扫描远程主机开放的端口
通过客户端脚本zkCli.sh连接到服务器,常用的指令使用
[...]ls / //列出zk中包含的内容
[...]create /node1 helloworld //创建/node1节点并指定
关联字符串
[...]get /node1 //查询节点数据
[...]set /node1 howareyou //向节点写入数据
[...]delete /node1 //删除节点
[...]ls / //列出根节点
zookeeper API:
1.创建Java工程
2.引入jar包
3.调用api
4.临时性节点不能有孩子
acl: access control list:访问控制列表
Perms类:里面有对列表进行创建,删除,修改节点的权限。、
在创建列表时需要传入ACL参数,不必去new,可以调用Ids类提供的静态属性OPEN_ACL_UNSAFE
zk = new ZooKeeper(config, sessionTimeout, this);
Stat stat = zk.exists(root, false);
if(stat == null){
// 创建根节点
zk.create(root, new byte[0], ZooDefs.Ids.OPEN_ACL_UNSAFE,CreateMode.PERSISTENT);
}
删除节点:
zk.delete(“节点路径”,节点的版本号);
如果给出的版本号和节点的版本号不一致,那么会抛出异常,如果不检查版本号,给版本号为-1.
ZooKeeper四字命令:
参考:http://blog.csdn.net/shatelang/article/details/7596007
Watch 观察者
zk事件激活是一次性触发激活的。
调用观察者可以通过zk.getXXX(调用观察者)再setXXX(触发事件)来进行。