Mã nhận dạng Snowflake

Bách khoa toàn thư mở Wikipedia
1785957406744772608
Snowflake ID
Tên khácTwitter Snowflake
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[sửa | sửa mã nguồn]

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.[1]

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.[1] 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ể.[2]

Ví dụ[sửa | sửa mã nguồn]

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 Twitter1288834974657 (được tính bằng mili giây thời gian Unix).[3] 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[sửa | sửa mã nguồn]

Đị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.[4] 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.[5] 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.[6] 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.[2]

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ự.[7]

Tham khảo[sửa | sửa mã nguồn]

  1. ^ a b “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. ^ a b “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[sửa | sửa mã nguồn]