求一款稳定靠谱的分布式整型 ID 生成组件 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
htxy1985
V2EX    Go 编程语言

求一款稳定靠谱的分布式整型 ID 生成组件

  •  
  •   htxy1985 170 天前 via Android 2321 次点击
    这是一个创建于 170 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如题,感谢
    期望是
    1.64 位 id ,有效位只有 53 位可用
    2.在设置种子后能保证绝对唯一性。
    3.单位时间内不会出现过分的性能瓶颈。
    第 1 条附言    170 天前
    补充强调下,64 位的数字只有 53 位是有效位。
    之前用的是这个 https://github.com/ace-zhaoy/go-id



    但是实际使用下来,机器码设置的稍微大一点(超过 10000 ),就开始有性能瓶颈,每秒只能生成几百个 id ,几乎用不了。
    求一款平替的 53 位分布式 ID 生成组件。
    11 条回复    2025-05-28 17:21:33 +08:00
    BBCCBB
        1
    BBCCBB  
       170 天前
    如果不要求严格的递增, 只要唯一, 可以用基于 db segment 的方案, 现成的如美团的 leaf 里的 db segment 模式.

    要求严格递增, 分布式就只能用类 snowflake 算法,
    要严格递增就只能像微信 seqsvr 那样, 单台机器服务某一些业务段了..
    BBCCBB
        2
    BBCCBB  
       170 天前
    说错了. 类 snowflake 做不到时间序的严格递增.. 除非单机
    itechify
        3
    itechify  
    PRO
       170 天前
    gitrebase
        4
    gitrebase  
       170 天前
    绝对唯一性么,就 db 号段吧,有很多优化手段,性能不会差的
    Hhehepei
        5
    Hhehepei  
       170 天前   2
    问题在于如果要满足楼主的以下几点要求
    1.有效位只有 53 位
    2.使用 32 位做时间戳
    3.机器序号大于 10000(机器序号至少要占 14 位)
    那可用的位就只有 53 - 32 - 14 = 7 也就是说单台机器每秒可用的序号就只有 2^7=128
    所以楼主的要求就不可能达成啊
    ps:很好奇怎样的场景会有超过 10000 台机器,并且每台机器每秒需要几百上千的序号
    htxy1985
        6
    htxy1985  
    OP
       170 天前
    @Hhehepei 你说的很有道理,我现在的思路准备在时间戳上下文章,将时间戳调整成毫秒级的,并缩短使用年限。
    lesismal
        7
    lesismal  
       170 天前
    go 里别用 int64 ,用 uint64 好像就是 64 位了,即使存到 mysql 里 bitint unsigned 也是相同范围是兼容的,差不多够 OP 用了
    aliipay
        8
    aliipay  
       169 天前
    @htxy1985 改成毫秒对性能只会更差。 你应该设计一个中心化的发号服务,这样机器配置数量就很少了,发号速率就可以做到很高。
    另外,时间不一定要 32 位,毕竟 31 位就能用到 2093 年了,还不够吗?
    aliipay
        9
    aliipay  
       169 天前
    瞬间峰值问题可以靠提前缓存来实现削峰,还能提高整体可靠性
    htxy1985
        10
    htxy1985  
    OP
       168 天前
    @aliipay 为什么毫秒级性能更差呢?
    THESDZ
        11
    THESDZ  
       135 天前
    弄一个专门生成 id 的基于时间批量生成,等着别的服务来拿。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2857 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 00:25 PVG 08:25 LAX 17:25 JFK 20:25
    Do have faith in what you're doing.
    ubao 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