本章节博客开始深入下zookeeper的配置文件分析,集群主从选举机制,节点类型讲解等内容。

    一起学习,一起进步。继续沉淀,慢慢强大。希望这文章对您有帮助。若有写的不好的地方,欢迎评论给建议!

    初写博客不久,我是杨展浩。这是我的第七篇博客。加油!!!

1、zookeeper的配置文件分析

    配置文件内容不多,贴图完事:

    分布式技术 -- ZooKeeper配置文件分析,集群主从选举机制,节点类型讲解-LMLPHP

2、集群主从选举机制

    zookeeper的集群与redis集群概念很类似。zookeeper的集群用 Leader领导者、Follower跟随者来标识。Redis的集群使用Master主、Slave从来标识。

  选举机制:初次进来的zookeeper服务,在参与选举中优先投自己一票,当发现自己的票数没超过集群的半数以上的时候,就会投出另一票给当前集群中的id最大的那一个zookeeper服务,zookeeper服务一次开启加入集群,当有一个zookeeper服务得到的投票数超过集群的半数以上,该zookeeper服务就当选Leader领导者了,而后面加入的zookeeper服务就算id大也不能当选Leader领导者,遵循先到先得原则,因为前面已经选出了一个Leader了,除非前面当选得Leader(zookeeper服务)挂了,选举重新开始。

    分布式技术 -- ZooKeeper配置文件分析,集群主从选举机制,节点类型讲解-LMLPHP

3、节点类型讲解

  • 持久(Persistent) :客户端和服务器端断开连接后,创建的节点不删除。
    • 客户端与Zookeeper断开连接后,该节点依旧存在。
    • 持久化顺序编号目录节点客户端与Zookeeper断开连接后,该节点依旧存在,只是Zookeeper给 该节点名称进行顺序编号。
  • 短暂(Ephemeral) :客户端和服务器端断开连接后,创建的节点自己删除。
    • 客户端与Zookeeper断开连接后,该节点被删除。
    • 临时顺序编号目录节点客户端与Zookeeper断开连接后,该节点被删除,只是Zookeeper给该节点名称进行顺序编号。

 

4、zookeeper客户端监听器原理

  • 先要存在一个 main 线程。

  • 在 main 线程中创建Zookeeper客户端,这时就会创建两个线程,一个负责网络连接通信(connect),一个负责监听(listener )。

  • 通过 connect 线程将注册的监听事件发送给Zookeeper服务。

  • 在Zookeeper服务的注册监听器列表中将注册的监听事件添加到列表中。

  • Zookeeper服务监听到列表中有数据或路径发生变化,就会将这个消息发送给 listener 线程。

  • listener线程内部调用了process()方法(就是程序员自定义的处理代码)。

    常见的监听例子:

  • 监听节点数据的变化    get path [watch]

  • 监听子节点增减的变化    Is path [watch]

分布式技术 -- ZooKeeper配置文件分析,集群主从选举机制,节点类型讲解-LMLPHP

 

5、写数据流程

分布式技术 -- ZooKeeper配置文件分析,集群主从选举机制,节点类型讲解-LMLPHP

09-05 23:25