deyu 2020-07-07
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协议进行通信。
ZooKeeper支持某些特定的四字命令字母与其的交互。它们大多是查询命令,用来获取ZooKeeper服务的当前状态及相关信息。用户在客户端可以通过telnet或nc向ZooKeeper提交相应的命令