【Mybatis-Plus框架學習】雪花算法 剖析


Youzg LOGO

介紹:

snowflake是 Twitter公司 開源的 分布式ID生成 算法

2020年8月4日,《蘇州高新區·2020胡潤全球獨角獸榜》發布,雪花算法排名第17位


那么,本人來通過 一張圖 基本展示下 雪花算法原理

原理:

原理


相信有同學不理解上圖的內容,
那么,本人來 解釋 下上圖的內容:

解釋:

  • 最高位是符號位,始終為0,不可用。
  • 41位的時間序列,精確到毫秒級,41位的長度可以使用69年。
    時間位還有一個很重要的作用是可以根據時間進行排序。
    注意,41位時間截不是存儲當前時間的時間截,而是存儲時間截的差值(當前時間截 - 開始時間截) 后得到的值,
    這里的 開始時間戳,一般是我們的 id生成器開始使用的時間
    由我們程序來指定的(如下下面程序SnowFlake類的START_STMP屬性)
    41位 的時間截,可以使用69年,
    $$ 年T = (1L << 41) / (1000L * 60 * 60 * 24 * 365) = 69 $$
  • 10位的機器標識
    (5bit是 數據中心,5bit是 機器ID)
    10位的長度最多支持部署1024個節點。
  • 12位的計數序列號,序列號即一系列的自增id,可以支持同一節點同一毫秒生成多個ID序號,12位的計數序列號支持 每個節點每毫秒 產生4096個ID序號

加起來剛好64位,為一個Long型。這個算法很簡潔,但依舊是一個很好的ID生成策略


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM