除了leader和follow模式之外,还有第三种模式:observer模式。

observer和follower在一些方面是一样的。详细点来讲,他们都向leader提交proposal。

但与follower不同,observer不参与投票的过程。它简单的通过接收leader发过来的INFORM消息来learn已经commit的proposal。

因为leader都会给follower和observer发送INFORM消息,所以它们都被称为learner。


使用观察者设置Zookeeper全员非常简单,只需要在原来的配置文件上改两个地方。第一,每个节点的配置文件设置为观察者,必须放置这一行:

peerType=observer

这一行告诉Zookeeper的服务是一个观察者。第二,在每个服务配置文件里,必须在观察者定义行添加:observer。例如:


server.1:localhost:2181:3181:observer

这个告诉其他服务server.1是一个观察者,并且他们不需要期望他选举。这是你在Zookeeper集群中添加观察者需要的所有配置。现在你可以连接到它好像是一个普通的追随者。尝试一下,通过运行:


bin/zkCli.sh -server localhost:2181

这里的localhost:2181是每个配置文件里指定的观察者的hostname和端口号。你应该查看一个命令行提示,通过类似于ls的操作查询Zookeeper服务。