雪花算法
雪花算法(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]。
參見
編輯參考文獻
編輯- ^ twitter-archive/snowflake. GitHub. [2021-02-10]. (原始內容存檔於2021-03-09) (英語).
- ^ Twitter's Snowflake Project To Update Tweet IDs Really Is More Like A Blizzard Now. TechCrunch. [2021-02-10] (美國英語).
- ^ @Wikipedia. 53 years ago today, members of the LGBTQI+ community began protesting in New York City in response to a police raid of the Stonewall Inn, a popular gay bar. The riots were a transformative event in the 20th century fight for LGBTQI+ rights in the US. (1/2) (推文) –透過Twitter. Missing or empty |date= (help)
- ^ 2019-08-03: TweetedAt: Finding Tweet Timestamps for Pre and Post Snowflake Tweet IDs. 2019-08-03. [2022-10-17]. (原始內容存檔於2022-06-17).
- ^ King, Ryan. Announcing Snowflake. blog.twitter.com. Twitter. June 1, 2010 [January 18, 2021]. (原始內容存檔於2021-05-08).
- ^ Siegler, MG. Tweet IDs About To Get Jumbled In A Blizzard As Snowflake Is Set To Roll Live. TechCrunch. October 12, 2010 [January 18, 2021]. (原始內容存檔於2022-10-19).
- ^ Twitter IDs. Twitter Developer. Twitter. [January 20, 2021]. (原始內容存檔於2022-09-01).
- ^ API Reference. Discord Developer Portal. Discord. [January 18, 2021]. (原始內容存檔於2022-08-31).
- ^ Sharding & IDs at Instagram. Instagram Engineering. May 2, 2016 [January 18, 2021]. (原始內容存檔於2021-01-12) (英語).
外部連結
編輯這是一篇電腦科學小作品。您可以透過編輯或修訂擴充其內容。 |