雪花算法-snowflake

snowflake 算法

snowflake 算法是 twitter 開源的分佈式 id 生成算法,就是把一個 64 位的 long 型的 id,1 個bit是不用的,用其中的 41 bit 做爲毫秒數,用 10 bit 做爲工做機器 id,12 bit 做爲序列號。算法

  • 1 bit:不用,爲啥呢?由於二進制裏第一個 bit 爲若是是 1,那麼都是負數,可是咱們生成的 id 都是正數,因此第一個 bit 統一都是 0。
  • 41 bit:表示的是時間戳,單位是毫秒。41 bit 能夠表示的數字多達 2^41 - 1,也就是能夠標識 2^41 - 1 個毫秒值,換算成年就是表示69年的時間。
  • 10 bit:記錄工做機器 id,表明的是這個服務最多能夠部署在 2^10臺機器上哪,也就是1024臺機器。可是 10 bit 裏 5 個 bit 表明機房 id,5 個 bit 表明機器 id。意思就是最多表明 2^5個機房(32個機房),每一個機房裏能夠表明 2^5 個機器(32臺機器)。
  • 12 bit:這個是用來記錄同一個毫秒內產生的不一樣 id,12 bit 能夠表明的最大正整數是 2^12 - 1 = 4096,也就是說能夠用這個 12 bit 表明的數字來區分同一個毫秒內的 4096 個不一樣的 id。
0 | 0001100 10100010 10111110 10001001 01011100 00 | 10001 | 1 1001 | 0000 00000000
相關文章
相關標籤/搜索