雪花算法(Snowflake)是一种生成分布式全局唯一ID的算法,生成的ID称为Snowflake IDs或snowflakes。这种算法由Twitter创建,并用于推文的ID。Discord和Instagram等其他公司采用了修改后的版本。
1358666646167748608 | |
---|---|
Snowflake ID | |
别名 | Twitter Snowflake |
格式
一个Snowflake ID有64位元。前41位是时间戳,表示了自选定的时期以来的毫秒数。 接下来的10位代表电脑ID,防止冲突。 其余12位代表每台机器上生成ID的序列号,这允许在同一毫秒内创建多个Snowflake ID。最后以十进制将数字序列化。
SnowflakeID基于时间生成,故可以按时间排序。[1] 此外,一个ID的生成时间可以由其自身推断出来。该特性可以用于按时间筛选ID,以及与之联络的对象。[2]
2022年六月由@Wikipedia所发的一条推文[3]的雪花ID是1541815603606036480。这个数字被转换成二进制就是0b 0001 0101 0110 0101 1010 0001 0001 1111 0110 0010 00|01 0111 1010|0000 0000 0000,其中以竖线分隔成三个部分。
用途
这个格式最初由Twitter在2010年宣布[5]。由于实现上的困难,他们在该年稍晚才推出更新[6]。Twitter对推文、私讯、用户、列表和其他可透过API存取的对象使用雪花ID[7]。
Discord同样也使用雪花ID,纪年则从2015年的第一秒开始[8]。
Instagram使用了修改后的版本,其中41位元用作时间戳,13位元用于表示分片(Shard)ID,10位元表示序列号[9]。
参见
参考文献
外部链接
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.