Zookeeper

Zookeeper

Zookeeper = 文件系统 + 通知机制

作为一个开源分布式的存储中间件,用来存储各个客户端都关心的数据,并采用观察者设计模式,当观察者触发了节点指定的事件,服务端就会通知客户端,客户端可以执行回调方法执行对应的操作。

  • Zookeeper的每个存储基本单位为znode,所有的znode都挂载在 "/"节点,每个znode都有一个路径标识,每个存储单位默认为1M,还可以存储Byte[]类型的数据。
  • 观察者模式设置后,仅在当次有效,仅一次,如果需要循环监听需要写递归监听。
  • Zookeeper设计采用了paxos协议设计,该协议要求只有当集群半数以上的服务实例存储,集群才会提供正常的服务。
  • Zookeeper中仅有一个Leader和多个Follower,在启动集群时会根据选举端口自动选举出 Leader。

选举机制:

自私、墙头草

  • 服务id大的节点具有选择优势,如果节点中内容相同,先比较id,如若内容不同选最新的当Leader,比zxid。因为每次数据改变都会更改zxid,该值最大的则代表内容最新最全。

监听原理:

  • 先创建main()线程,并在main()线程中创建一个Zookeeper的客户端,这是就会创建两个线程,Connet负责网络连接通讯,Listener负责监听,通过Connect线程将监听的注册事件发送给zookeeper,然后Zookeeper的监听器会将注册的监听时间添加到监听列中,Zookeeper监听到有数据或路径的变化,就会将消息发送给Lintener线程,Listener线程内部会调用回调process()方法执行对应的操作。
posted @ 2021-05-26 21:48  yuexiuping  阅读(48)  评论(0编辑  收藏  举报