勵志

勵志人生知識庫

雪花id生成

雪花算法(Snowflake)是由Twitter開源的一種分散式ID生成算法,它能夠生成一個64位的唯一ID,這個ID包含了時間戳數據中心ID機器ID等信息。雪花算法的核心思想是利用時間戳和機器ID生成一個唯一的序列號,以保證生成的ID的唯一性。

雪花算法生成的ID結構如下:

符號位:1位,固定為0,表示正數。

時間戳:41位,精確到毫秒級別,可以使用69年。

數據中心ID:5位,可以部署32個數據中心。

機器ID:5位,可以部署32台機器。

序列號:12位,每毫秒可以生成4096個ID。

雪花算法的實現過程包括以下幾個步驟:

獲取當前時間戳,精確到毫秒級別。

判斷當前時間戳是否小於上次生成ID的時間戳,如果是,則等待系統時鐘追上來。

如果是同一毫秒內生成的ID,則需要增加序列號,否則序列號重置為0。

將時間戳、數據中心ID、機器ID和序列號按照規定的位數組合成一個64位的ID。

雪花算法的優點是能夠生成趨勢遞增的ID,適用於分散式系統中生成唯一且有序的ID號,廣泛套用於如資料庫主鍵、日誌序號等場景。