raft 算法中的 term 一直在增长的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
linbingqinag
V2EX    程序员

raft 算法中的 term 一直在增长的问题

  •  
  •   linbingqinag 2018-09-03 11:26:02 +08:00 2898 次点击
    这是一个创建于 2656 天前的主题,其中的信息可能已经有所发展或是发生改变。

    raft 算法中的 term 值随着选举次数一直在增加,到某一天到达了 uint64 的上限,想问下有什么办法可以阻止这个现象,目前的想法是在 leader 做同步的时候重置到一个指定的数值,不知道是否可行

    第 1 条附言    2018-09-03 13:29:56 +08:00
    应用的场景是不排除部分做恶的节点,可能在加入的时候将自己的 term 值修改为很高的一个值,
    第 2 条附言    2018-09-03 13:32:42 +08:00
    leader 是有限制的,每个是 5 分钟
    第 3 条附言    2018-09-03 13:33:46 +08:00
    时间到到达之后是要让他下线的,重新开始一轮
    17 条回复    2018-09-04 09:18:52 +08:00
    hellotitan
        1
    hellotitan  
       2018-09-03 11:48:44 +08:00 via Android
    好问题,占坑等大佬
    Monad
        2
    Monad  
       2018-09-03 11:55:03 +08:00   3
    max(uint64) = 18446744073709551616 ≈ 1.8 * 10^19
    以 5GHZ 的 CPU 每条指令都是加一的话 需要跑约 3689348814 秒 约等于 116 年
    116 年要是都不停下的进程 可以考虑拍照留恋 :)
    JohnSmith
        3
    JohnSmith  
       2018-09-03 12:03:11 +08:00
    1.term 减小会导致算法变复杂(raft 算法设计严重依赖 term 自增
    2.raft 通过 prevote 指令优化 term 无意义自增
    3.如楼上所说,并且 term 不是频繁变动的参数,没太大必要做优化
    flikecn
        4
    flikecn  
       2018-09-03 12:05:59 +08:00 via Android
    prevote 机制可以解决,etcd 的 raft lib 已经实现了。
    hyperdak288
        5
    hyperdak288  
       2018-09-03 12:23:41 +08:00
    这让我想起以前同学公司讨论的事,一个有且只有 100 条数据的表,主键应该用 int 还是 bigint,这个事他们讨论了一天
    linbingqinag
    &nbs;   6
    linbingqinag  
    OP
       2018-09-03 13:30:25 +08:00
    @flikecn 嗯,可以的,我看看
    sy20030260
        7
    sy20030260  
       2018-09-03 13:32:24 +08:00 via Android
    好久没见这样高质量的讨论,马一下
    XiaoxiaoPu
        8
    XiaoxiaoPu  
       2018-09-03 13:36:49 +08:00
    uint64 不够还有 uint128,可以用到宇宙毁灭了
    linbingqinag
        9
    linbingqinag  
    OP
       2018-09-03 13:42:25 +08:00
    @XiaoxiaoPu 如果新加入的节点是作恶节点,并且开始 term 修改为了 int64/int128 的最大值,那么他有可能是作为 leader,当他下线的时候此时 follower+1, 已经超过了最大的值,程序岂不是要死了?
    sampeng
        10
    sampeng  
       2018-09-03 13:49:08 +08:00
    为什么会有作恶的?
    linbingqinag
        11
    linbingqinag  
    OP
       2018-09-03 13:54:10 +08:00
    @sampeng 代码是放在一个共享的环境中,每个节点的持有人都是可以看到并且修改的,由于 leader 是有某些利益的,所以会有一部分的作恶
    linbingqinag
        12
    linbingqinag  
    OP
       2018-09-03 13:54:41 +08:00
    @linbingqinag 类似于去中心化的结构
    linbingqinag
        13
    linbingqinag  
    OP
       2018-09-03 13:55:32 +08:00
    目前觉得 prevote 是比较好的解决办法
    sampeng
        14
    sampeng  
       2018-09-03 14:06:34 +08:00
    @linbingqinag 怎么听着这么像挖矿。。。
    linbingqinag
        15
    linbingqinag  
    OP
       2018-09-03 14:12:24 +08:00
    wangdashuai
        16
    wangdashuai  
       2018-09-03 14:24:31 +08:00   1
    是不是吧 raft 和区块链弄混了。raft 中的节点都是自己的节点,不会作恶。raft 并不解决拜占庭将军问题 。
    Reficul
        17
    Reficul  
       2018-09-04 09:18:52 +08:00 via Android
    raft 并不防攻击啊
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2871 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 14:02 PVG 22:02 LAX 06:02 JFK 09:02
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86