分佈式ID生成

關於雪花

雪花(snowflake)在自然界中,是極具獨特美麗,又變幻莫測的東西:

  1. 雪花屬於六方晶系,它具有四個結晶軸,其中三個輔軸在一個基面上,互相以60度的角度相交,第四軸(主晶軸)與三個輔軸所形成的基面垂直;
  2. 雪花的基本形狀是六角形,但是大自然中卻幾乎找不出兩朵完全相同的雪花,每一個雪花都擁有自己的獨有圖案,就象地球上找不出兩個完全相同的人一樣。許多學者用顯微鏡觀測過成千上萬朵雪花,這些研究最後表明,形狀、大小完全一樣和各部分完全對稱的雪花,在自然界中是無法形成的。
分佈式ID生成 - 雪花算法


雪花算法:

雪花算法的原始版本是scala版,用於生成分佈式ID(純數字,時間順序),訂單編號等。

自增ID:對於數據敏感場景不宜使用,且不適合於分佈式場景。

GUID:採用無意義字符串,數據量增大時造成訪問過慢,且不宜排序。

分佈式ID生成 - 雪花算法

算法描述:

  • 最高位是符號位,始終為0,不可用。
  • 41位的時間序列,精確到毫秒級,41位的長度可以使用69年。時間位還有一個很重要的作用是可以根據時間進行排序。
  • 10位的機器標識,10位的長度最多支持部署1024個節點。
  • 12位的計數序列號,序列號即一系列的自增id,可以支持同一節點同一毫秒生成多個ID序號,12位的計數序列號支持每個節點每毫秒產生4096個ID序號。

具體代碼實現可以參看:https://blog.csdn.net/xiaopeng9275/article/details/72123709


分享到:


相關文章: