应用使用ZooKeeper客户端使用ZooKeeper服务,客户端负责和集群的交互。
ZooKeeper集群有两种模式:
- standalone模式
生产环境下,一般不使用这个模式。
集群中有一个独立运行的ZooKeeper节点。 -
quorum模式
包含多个ZooKeeper节点。
Session
- 客户端会选取集群中某一个节点建立session。
- 客户端可以主动关闭Session。
- 如果ZooKeeper节点没有在session关联的timeout时间内收到客户端消息,节点会主动关闭session。
-
客户端如果发现连接的节点出错,会自动和其他节点建立连接
quorum模式
quorum模式集群包含多个几节点。
下图所示,集群有三个节点,节点1时leader,节点2和节点3时follower节点。
- leader几点可以处理读写请求。
- follower只能处理读请求。
-
follower在接到写请求时,会将其转发给leader节点处理。
数据一致性
- 全局线性写入:先到达leader的写请求仙贝处理,leader决定写请求的执行顺序。
- 客户端FIFO顺序:来自给定客户端的顺序按照发送顺序执行。
3节点的quorum模式集群演示
- 配置文件
需要准备三个配置文件,dataDir和clientPort需要配置不同的值。
三个配置文件的server.n部分是一样的。
在server.1 = 127.0.0.1:3333:4444
中,3333是用于quorum通信的端口,3334是用于leader选举的端口。
还要为每个节点创建myid
文件,3个节点的myid文件内容分别为1、2和3。
-
启动集群