V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
linxiaoziruo
V2EX  ›  Java

zk 脑裂问题

  •  
  •   linxiaoziruo · 2020-08-14 13:29:11 +08:00 · 3951 次点击
    这是一个创建于 1560 天前的主题,其中的信息可能已经有所发展或是发生改变。

    因为网络波动产生了集群隔离,被隔离的群龙无首的子集群选举产生了新的 leader 。 过了一会儿网络恢复了,这时候整个集群就有两个 leader 。 这种情况出现之后,zk 是发起新的一轮选举重新选出新 leader 吗?

    18 条回复    2020-08-15 10:44:21 +08:00
    hangszhang
        1
    hangszhang  
       2020-08-14 13:35:10 +08:00
    节点数量为单数,集群隔离之后应该只有一个 leader 吧
    linxiaoziruo
        2
    linxiaoziruo  
    OP
       2020-08-14 15:33:44 +08:00
    @hangszhang 网络恢复之后两个集群合并了,原来的 leader 和新选举产生的 leader,就是两个 leader 啊
    Znemo
        3
    Znemo  
       2020-08-14 16:32:51 +08:00
    @linxiaoziruo 单数节点集群,产生两个集群之后,选取 leader 应该是无法超过法定节点数吧,理论上不应该选不出 leader 嘛。
    mosesyou
        4
    mosesyou  
       2020-08-14 17:27:44 +08:00
    zk 集群默认选举 leader 要过半节点选票
    hangszhang
        5
    hangszhang  
       2020-08-14 17:29:32 +08:00   ❤️ 1
    @linxiaoziruo zookeeper 会有一个 term 的概念,新的 Leader 的 term 大于老的 Leader,老的 Leader 由于无法达到法定人数,所有不会有新数据产生。当集群合并时,原来的那个 leader 会作为普通节点加入到新的集群中,并且从新的 leader 中同步新的数据。
    hangszhang
        6
    hangszhang  
       2020-08-14 17:30:10 +08:00
    ren qi 居然还是敏感词汇。。。
    fengjianxinghun
        7
    fengjianxinghun  
       2020-08-14 18:39:27 +08:00
    @hangszhang 我在微博打出这 2 个字 ren qi,还被封号了。。
    zhangtao
        8
    zhangtao  
       2020-08-14 19:31:34 +08:00
    必定会有一个子集群节点数不够半数以上,所以不会选出来 leader
    chihiro2014
        9
    chihiro2014  
       2020-08-14 20:12:51 +08:00
    看 6.824 去,这个有一集就是讲 ZK 脑裂的
    https://www.bilibili.com/video/BV1x7411M7Sf?p=27
    des
        10
    des  
       2020-08-14 20:17:59 +08:00
    @hangszhang 人气?
    des
        11
    des  
       2020-08-14 20:18:45 +08:00
    @des 我知道了。。。。
    hangszhang
        12
    hangszhang  
       2020-08-14 23:41:12 +08:00
    @zhangtao 假如有 zk 集群有五个节点,分成了 2 和 3, leader 在 2 里面,那个由 3 个节点组成的集群是能够选出新的 leader 的
    yylzcom
        13
    yylzcom  
       2020-08-14 23:46:40 +08:00
    @des #10 亻壬 其月

    想了半天才想到应该是这个
    Croxx
        14
    Croxx  
       2020-08-14 23:48:09 +08:00 via iPhone
    这玩意老实看论文吧,细节还是挺多的。
    lucybenz
        15
    lucybenz  
       2020-08-15 07:05:45 +08:00
    @yylzcom 一脑子 人 妻
    solider245
        16
    solider245  
       2020-08-15 07:17:34 +08:00
    纯外行,光看你这个问题描述还以为你要内涵呢。
    楼主这个问题感觉有点像当年唐山大地震那样,因为大地震的突然来临,原先的组织基本失效。
    目前能够联系到的组员为了保持组织的正常活动,就自发选举一个临时 leader,形成一个新的临时组织来暂行组织任务。老的 leader 如果带着组员找到了临时组织,一般会带着组员和临时组建的组织合并再次形成一个新的临时组织,然后再次选举一个临时 leader 。至于是哪个 leader 当头会根据具体的情况来安排,因为这个都是临时组织,没有合法性。需要上报最后任命下来才会产生最终的有合法性的组织。

    大概是这么一个原理吧,楼主可以参考一下,错误的地方还请自行纠正。
    yylzcom
        17
    yylzcom  
       2020-08-15 07:49:45 +08:00
    @lucybenz #15 ......
    原来是这个,是我过于政治敏感了
    laoyur
        18
    laoyur  
       2020-08-15 10:44:21 +08:00
    中文环境要讨论点技术问题都这么难
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1170 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 18:27 · PVG 02:27 · LAX 10:27 · JFK 13:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.