分布式ID生成器(雪花演算法)

2021-09-25 13:14:48 字數 569 閱讀 2686

目前微服務架構盛行,在分布式系統中的操作中都會有一些全域性性id的需求,所以我們不能使用資料庫本身的自增功能來產生主鍵值,只能由程式來生成唯一的主鍵值。我們採用的是開源的twitter( 非官方中文慣稱:推特.是國外的乙個**,是乙個社交網路及微部落格服務) 的snowflake (雪花)演算法。

各個段解析:分段

作用說明

1bit

保留(不用)

41bit

時間戳,精確到毫秒

最多可以支援69年的跨度

5bit

機器id

最多支援2的5次方(32)個節點

5bit

業務編碼

最多支援2的5次方(32)個節點

12bit

毫秒內的計數器

每個節點每毫秒最多產生2的12次方(4096)個id

預設情況下41bit的時間戳可以支援該演算法使用到

分布式id生成器,雪花演算法IdWorker

名稱 idworker.j a 描述 分布式自增長id twitter的 snowflake j a實現方案 核心 為其idworker這個類實現,其原理結構如下,我分別用乙個0表示一位,用 分割開部分的作用 1 0 0000000000 0000000000 0000000000 00000000...

分布式ID生成器

一 需求緣起 幾乎所有的業務系統,都有生成乙個唯一記錄標識的需求,例如 這個記錄標識往往就是資料庫中的主鍵,資料庫上會建立聚集索引 cluster index 即在物理儲存上以這個字段排序。這個記錄標識上的查詢,往往又有分頁或者排序的業務需求,例如 所以往往要有乙個time欄位,並且在time欄位上...

分布式 ID 生成器

乙個唯一 id 在乙個分布式系統中是非常重要的乙個業務屬性,其中包括一些如訂單 id,訊息 id 會話 id,他們都有一些共有的特性 全域性唯一很好理解,目的就是唯一標識某個次請求,某個業務。通常有以下幾種方案 可以利用mysql中的自增屬性auto increment來生成全域性唯一 id,也能保...