Đừng nhầm lẫn với Bông tuyết.

Các thành phần của mã nhận dạng Snowflake trong hệ nhị phân
**Mã nhận dạng Snowflake** (hoặc Snowflakes ID) là một loại mã nhận dạng độc nhất được sử dụng trong điện toán phân tán. Loại mã này được tạo ra bởi Twitter và được sử dụng cho mã nhận dạng của các bài đăng trên Twitter. Loại mã nhận dạng này đã được Discord, Instagram sử dụng phiên bản đã qua sửa đổi.

Định dạng
---------

Mã nhận dạng Snowflake có dạng 64 bit ở dạng nhị phân (nhưng chỉ có 63 bit được sử dụng để cho vừa với số nguyên có dấu). 41 bit đầu tiên là dấu thời gian, đại diện cho mili giây kể từ kỷ nguyên đã chọn. 10 bit tiếp theo đại diện cho một ID máy, ngăn chặn xung đột. 12 bit nữa đại diện cho số thứ tự của mỗi máy, để cho phép tạo ra nhiều snowflake trong cùng một mili giây. Con số cuối cùng thường được đánh số thứ tự ở dạng thập phân.

Mã nhận dạng Snowflake có thể sắp xếp theo thời gian bởi vì chúng dựa trên thời gian chúng được tạo ra. Ngoài ra, thời gian mà một snowflake ID được tạo ra cũng có thể được tính từ chính snowflake. Điều này có thể được sử dụng để lấy snowflake (và các đối tượng liên quan của chúng) đã được tạo trước hoặc sau một ngày cụ thể.

### Ví dụ

Một bài đăng trên Twitter do @Wikipedia tạo ra vào tháng 6 năm 2022 có snowflake ID là `1541815603606036480`. Số này có thể được chuyển đổi thành nhị phân là `0b 0001 0101 0110 0101 1010 0001 0001 1111 0110 0010 00|01 0111 1010|0000 0000 0000`, với dấu gạch thẳng "|" biểu thị cho ba phần của ID.

* 41 bit đầu tiên (+ 1 bit số 0 trên cùng) chuyển đổi thành số thập phân là `367597485448`. Thêm giá trị vào Kỷ nguyên Twitter là `1288834974657` (được tính bằng mili giây thời gian Unix). Do đó, thời gian Unix của tweet là `1656432460.105`: 28 tháng 6 năm 2022 16:07:40.105 UTC.
* 10 bit ở giữa `01 0111 1010` là ID máy.
* 12 bit cuối cùng giải mã thành tất cả 0, có nghĩa là tweet này là tweet đầu tiên được máy xử lý ở một phần nghìn giây nhất định.

Sử dụng
-------

Định dạng nhận dạng này được Twitter công bố lần đầu tiên vào tháng 6 năm 2010. Do những thách thức trong việc triển khai, họ đã đợi đến cuối năm để tung ra bản cập nhật. Twitter sử dụng snowflake ID cho các tweet, tin nhắn trực tiếp, người dùng, danh sách và tất cả các đối tượng khác có sẵn trên API. Discord cũng bắt đầu sử dụng snowflake ID, với kỷ nguyên của chúng được đặt vào giây đầu tiên của năm 2015.

Instagram sử dụng phiên bản đã sửa đổi của snowflake ID, với 41 bit cho dấu thời gian, 13 bit cho ID phân đoạn và 10 bit cho số thứ tự.

Tham khảo
---------

1. 1 2  "GitHub - twitter-archive/snowflake at b3f6a3c6ca8e1b6847baa6ff42bf72201e2c2231". *GitHub* (bằng tiếng Anh). Lưu trữ bản gốc ngày 9 tháng 3 năm 2021. Truy cập ngày 31 tháng 8 năm 2022.
2. 1 2  "Discord Developer Portal — API Docs for Bots and Developers". *Discord Developer Portal*. Lưu trữ bản gốc ngày 31 tháng 8 năm 2022. Truy cập ngày 31 tháng 8 năm 2022.
3. ↑  "2019-08-03: TweetedAt: Finding Tweet Timestamps for Pre and Post Snowflake Tweet IDs". *2019-08-03*. Lưu trữ bản gốc ngày 17 tháng 6 năm 2022. Truy cập ngày 31 tháng 8 năm 2022.
4. ↑  "Announcing Snowflake". *blog.twitter.com* (bằng tiếng Anh). Lưu trữ bản gốc ngày 31 tháng 8 năm 2022. Truy cập ngày 31 tháng 8 năm 2022.
5. ↑  "Tweet IDs About To Get Jumbled In A Blizzard As Snowflake Is Set To Roll Live". *TechCrunch* (bằng tiếng Anh). Lưu trữ bản gốc ngày 8 tháng 10 năm 2022. Truy cập ngày 31 tháng 8 năm 2022.
6. ↑  "Twitter IDs". *developer.twitter.com* (bằng tiếng Anh). Lưu trữ bản gốc ngày 1 tháng 9 năm 2022. Truy cập ngày 31 tháng 8 năm 2022.
7. ↑  Engineering, Instagram (2 tháng 5 năm 2016). "Sharding & IDs at Instagram". *Medium* (bằng tiếng Anh). Lưu trữ bản gốc ngày 12 tháng 1 năm 2021. Truy cập ngày 31 tháng 8 năm 2022.

Liên kết ngoài
--------------

* Triển khai tham chiếu của Twitter trên GitHub