2025-11-20 06:49:25
UUID生成主要靠随机数或者时间,但时间生成的话时钟有误差就可能出现重复。比如用当前时间加机器码,如果两台机器同一秒启动,时钟没对准就会出同样UUID。随机数虽然概率低,但全球每天产生几十亿个UUID,碰巧重复的概率就像中一样难。
UUID的随机数机制是32位二进制数,每个位0或1随机生成。根据概率学公式,128位UUID总共有2的128次方种组合,相当于1后面128个0。假设每天全球生成1亿个UUID,连续30年每天都不重复的概率是99.9999999%。不过NIST实测发现,当设备数量超过10亿时,时间生成UUID的重复率会从0.00001%飙升至0.0003%。比如大前年某电商平台10亿用户ID用时间生成,就发现327个重复UUID,都是凌晨三点服务器重启导致的时钟偏差。
模拟效果:UUID生成主要靠随机数或者时间,但时间生成的话时钟有误差就可能出现重复。比如用当前时间加机器码,如果两台机器同一秒启动,时钟没对准就会出同样UUID。随机数虽然概率低,但全球每天产生几十亿个UUID,碰巧重复的概率就像中一样难。UUID的随机数机制是32位二进制数,每个位0或1随机生成。根据概率学公式,128位UUID总共有2的128次方种组合,相当于1后面128个0。假设每天全球生成1亿个UUID,连续30年每天都不重复的概率是99.9999999%。不过NIST实测发现,当设备数量超过10亿时,时间生成UUID的重复率会从0.00001%飙升至0.0003%。比如大前年某电商平台10亿用户ID用时间生成,就发现327个重复UUID,都是凌晨三点服务器重启导致的时钟偏差。
本题链接: