Mã nhận dạng Snowflake

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à . Số này có thể được chuyển đổi thành nhị phân là , 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à . Thêm giá trị vào Kỷ nguyên Twitter là  (đượ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  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

Liên kết ngoài 

 

Định danh duy nhất
Twitter
Cấu trúc dữ liệu phân tán