gpt4 book ai didi

apache-zookeeper - ZooKeeper 在裂脑场景中的内部行为

转载 作者:行者123 更新时间:2023-12-03 23:50:56 29 4
gpt4 key购买 nike

我试图了解 Apache ZooKeeper 在裂脑情况下的内部工作原理。假设有一个由 5 个服务器组成的集群:A、B、C、D 和 E,其中 A 是领导者。现在假设子簇 {A, B} 与子簇 {C, D, E} 分离。

在这种情况下,子集群 {C, D, E} 可以选举一个新的领导者并取得进展。另一方面,{A, B} 不能取得进展,因为没有大多数节点来确认更新。

我很好奇:

  • 老领导A怎么办?我预计它会失去领导力,但这是怎么发生的?活跃的领导者有一些定期检查以确保它拥有大多数追随者?
  • 连接到 A 和 B 的客户端会发生什么情况?它们是否会被自动重定向到仍然可以取得进展的服务器之一(C、D 或 E)。或者更确切地说,他们坚持使用 A 或 B,直到裂脑情况得到治愈并且整个集群重新连接?

  • 谢谢,
    加布里埃尔

    最佳答案

    在对本地集群进行了一些试验后,我想我弄清楚了这种行为。

    我启动了一个由 5 个节点组成的本地集群,然后删除了其中的 2 个节点。其余 3 个节点仍占多数,因此集群已启动并运行。此时我连接了一个客户端。

    然后我关闭了另一台服务器,此时剩余的 2 个节点无法维持集群正常运行。

    1) 在剩下的两个节点之一(恰好是领导者)的日志中,我可以看到:

    [myid:5] - WARN [RecvWorker:3:QuorumCnxManager$RecvWorker@762] - Connection broken for id 3, my id = 5, error = java.io.EOFException at java.io.DataInputStream.readInt(DataInputStream.java:392) at org.apache.zookeeper.server.quorum.QuorumCnxManager$RecvWorker.run(QuorumCnxManager.java:747)



    然后

    [myid:5] - INFO [QuorumPeer[myid=5]/127.0.0.1:2185:FastLeaderElection@740] - New election. My id = 5, proposed zxid=0x300000002



    因此,节点似乎正在积极监控连接并对断开的连接使用react(在这种情况下尝试选举另一个领导者)。

    2) 在连接的客户端的日志中,我可以看到:

    [myid:] - INFO [main-SendThread(localhost:2185):ClientCnxn$SendThread@966] - Opening socket connection to server localhost/127.0.0.1:2185. Will not attempt to authenticate using SASL (unknown error)

    [myid:] - INFO [main-SendThread(localhost:2185):ClientCnxn$SendThread@849] - Socket connection established to localhost/127.0.0.1:2185, initiating session

    [myid:] - INFO [main-SendThread(localhost:2185):ClientCnxn$SendThread@1085] - Unable to read additional data from server sessionid 0x343d9a80f220000, likely server has closed socket, closing socket connection and attempting reconnect



    因此节点关闭客户端打开的连接,因为集群已关闭。

    在这种情况下,整个集群都关闭了,因此客户端继续尝试连接到其中一个节点,但运气不佳。但我假设在裂脑情况下,当大多数人仍在某处运行时,客户端最终将能够连接到它(当然,假设它具有网络连接)。

    关于apache-zookeeper - ZooKeeper 在裂脑场景中的内部行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21380664/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com