关于zookeeper

zookeeper可以作为dubbo的注册中心。一般都是以奇数个zookeeper集群的形式。

几个主要知识点。

session。zookeeper是个服务器,zk客户端(服务消费者和提供者)要和zk服务端(也就是注册中心)连接就要建立一次TCP长连接,连接建立后session就建立了,sessionID是保证会话的唯一性的,通过会话客户端还可以接收来自服务端的watch事件通知。

znode,是zk的数据的最小单元,也包含了属性,zk的所有数据都保存在内存里,结构是一棵树,所以就像文件一样用路径来访问,例如/D/dd/s。那么每一个路径就是一个znode。那znode我们既然弄了一棵树来存储,还有为了维护znode我们用stat数据结构,它存储了znode父节点和子节点的信息。

watcher,是最重要的,在一些znode上注册watcher,那么当一些事件触发的时候,zk服务端就可以通知客户端做某些事了,比如统一的修改某些配置信息。这是实现分布式协调的关键。

也就是说把服务提供者在zookeeper里注册为znode,这样服务消费者只需要在这些znode里根据负载均衡原则找znode,进行连接。其他部分znode可以用来注册watcher,触发这些事件就会

zk集群各服务器之间通过zab协议进行通信。

相关推荐