Zookeeper应用范围
介绍:Zookeeper分为2个部分:服务器端和客户端,客户端只连接到整个ZooKeeper服务的某个服务器上。客户端使用并维护一个TCP连接,通过这个连接发送请求、接受响应、获取观察的事件以及发送心跳。如果这个TCP连接中断,客户端将尝试连接到另外的ZooKeeper服务器。客户端第一次连接到ZooKeeper服务时,接受这个连接的 ZooKeeper服务器会为这个客户端建立一个会话。当这个客户端连接到另外的服务器时,这个会话会被新的服务器重新建立。
启动Zookeeper服务器集群环境后,多个Zookeeper服务器在工作前会选举出一个Leader,在接下来的工作中这个被选举出来的Leader死了,而剩下的Zookeeper服务器会知道这个Leader死掉了,在活着的Zookeeper集群中会继续选出一个Leader,选举出leader的目的是为了可以在分布式的环境中保证数据的一致性。如图所示:
ZooKeeper支持watch(观察)的概念。客户端可以在每个znode结点上设置一个观察。如果被观察服务端的znode结点有变更,那么watch就会被触发,这个watch所属的客户端将接收到一个通知包被告知结点已经发生变化。若客户端和所连接的ZooKeeper服务器断开连接时,其他客户端也会收到一个通知,也就说一个Zookeeper服务器端可以对于多个客户端,当然也可以多个Zookeeper服务器端可以对于多个客户端使用:
1.查看某zookeeper的工作模式:
Java代码
[*]echo stat|nc 127.0.0.1 2183
[*]Zookeeper version: 3.3.3-1073969, built on 02/23/2011 22:27 GMT
[*]Clients:
[*] /127.0.0.1:2631(queued=0,recved=1,sent=0)
[*]
[*]
[*]Latency min/avg/max: 0/0/0
[*]Received: 1
[*]Sent: 0
[*]Outstanding: 0
[*]Zxid: 0x300000002
[*]Mode: leader
[*]Node count: 7
2.客户端连接:
Java代码
[*]zkCli.cmd -server 127.0.0.1:2182
3.常用的命令:
Java代码
[*]set path data
[*]ls path
[*]setAcl path acl
[*]addauth scheme auth
[*]connect host:port
[*]delete path
[*]ls2 path
[*]delquota [-n|-b] path
[*]quit
[*]printwatches on|off
[*]history
[*]getAcl path
[*]stat path
[*]setquota -n|-b val path
[*]get path
[*]close
[*]listquota path
[*]sync path
[*]create [-s] [-e] path data acl
[*]redo cmdno
应用场景:
1.做配置管理
所有的配置文件存放到zookeeper集群上,如果发生变动那么客户端获取的时候直接获取到最新的配置信息
2.集群管理
应用集群中,我们常常需要让每一个机器知道集群中(或依赖的其他某一个集群)哪些机器是活着的,并且在集群机器因为宕机,网络断链等原因能够不在人工介入的情况下迅速通知到每一个机器。
3.命名服务
数据存储采用/path1/path2 data的方式存储
4.提供分布式锁机制
页:
[1]