|
介绍:
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[0](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 [version]
- ls path [watch]
- setAcl path acl
- addauth scheme auth
- connect host:port
- delete path [version]
- ls2 path [watch]
- delquota [-n|-b] path
- quit
- printwatches on|off
- history
- getAcl path
- stat path [watch]
- setquota -n|-b val path
- get path [watch]
- close
- listquota path
- sync path
- create [-s] [-e] path data acl
- redo cmdno
应用场景:
1.做配置管理
所有的配置文件存放到zookeeper集群上,如果发生变动那么客户端获取的时候直接获取到最新的配置信息
2.集群管理
应用集群中,我们常常需要让每一个机器知道集群中(或依赖的其他某一个集群)哪些机器是活着的,并且在集群机器因为宕机,网络断链等原因能够不在人工介入的情况下迅速通知到每一个机器。
3.命名服务
数据存储采用/path1/path2 data的方式存储
4.提供分布式锁机制 |
|
|
|
|
|
|