• 飞翔
    2019-10-22
    老师 想问下zookeeper 帮助别的系统选主过程,
    如果我有 3个系统, A B C 一起动 就像zookeeper 发送选主请求, 我有个疑问 什么时候zookeeper返回确定哪个是主的请求 比如 假设 A 创建的是node 1, B node2, C node3, 您说 是选小的 也就是A 是主, 但是假设 A 延迟了, B 和C 发送了请求, 完后选了主 就会是B, 但是这时候A 咋办?

    作者回复: 既然A的znode编号是1那就说明ZooKeeper首先为A的创建请求分配的zxid。你说的延迟应该是说ZooKeeper给A返回的响应延迟了,这个不影响zxid的大小。A还是leader。

    
    
  • calljson
    2019-09-10
    zookeeper的watcher机制和选举机制讲解的太浅了,背后原理和架构没有详细讲解,希望能讲解其背后逻辑,不能只对着源码讲解

    作者回复: 好的,多谢您的建议

    
    
  • hgf
    2019-08-28
    老师,建议分析一下watch和事件的各种可能,系统内部状态变化,包括异常情况下是否可用

    作者回复: ZooKeeper使用WatchedEvent(https://zookeeper.apache.org/doc/r3.5.5/api/org/apache/zookeeper/WatchedEvent.html)来表示session的状态变化和znode的变化。WatchedEvent的Watcher.Event.KeeperState对应session的变化,WatchedEvent的Watcher.Event.EventType对应znode的变化。

    关于KeeperState和EventType的取值,参见https://zookeeper.apache.org/doc/r3.5.5/api/org/apache/zookeeper/Watcher.Event.html。

    如果EventType是None,WatchedEvent代表的就是session的状态变化,否则代表的是znode的变化。

    KeeperException表示ZooKeeper的各种出错情况,其中需要特别注意的是KeeperException.ConnectionLossException 。我们可能需要在遇到KeeperException.ConnectionLossException时进行重试。

    
    
我们在线,来聊聊吧