當前位置:首頁 » 操作系統 » 當當網資料庫

當當網資料庫

發布時間: 2023-09-11 03:36:50

資料庫分庫分表(二)Twitter-Snowflake(64位分布式ID演算法)分析與JAVA實現

Twitter-Snowflake演算法產生的背景相當簡單,為了滿足Twitter每秒上萬條消息的請求,每條消息都必須分配一條唯一的id,這些id還需要一些大致的順序(方便客戶端排序),並灶核且在掘頃分布式系統中不同機器產生的id必須不同。各種主鍵ID生成策略對比,見 常見分布式主鍵ID生成策略

41位的時間前綴 10位的節點標識 12位的sequence 組合在一起。
除了最高位bit標記為不可用以外,其餘三組bit佔位均可浮動,看具體的業務需求而定。 默認情況下41bit的時間戳,1970年算起可以支持該演算法使用到2038年,10bit的工作機器id可以支持1024台機器,序列號支持1毫秒產生4096個自增序列id

Snowflake是Twitter在2010年用Scala語言寫的一套主鍵生成策略,用Thrift對外發布主鍵生成服務,其中依賴了Twitter內部的Infrastructure,後來Twitter用 Twitter-server 代替了Snowflake,自2012年起就未更新。見 Twitter-Snowflake項目地址(Tags:snowflake-2010)
之前寫了一個Java的實現,改自網上一個版本: Twitter的分布式自增ID演算法Snowflake實現分析及其Java、Php和Python版 。後來看到當當網的 Sharding-JDBC 分庫分表中間件已實現了此演算法。就直接在其中添隱散掘加了一些新特性,已merge。( 具體實現 , 說明文檔 )
添加3種IdGenerator實現。

用筆記本(i7-3632QM 2.2GHz 四核八線程)測試了下,每秒生成409萬(理論上的峰值),CPU佔用率18.5%。

熱點內容
red5伺服器搭建 發布:2025-01-28 00:56:49 瀏覽:679
遺傳演算法ppt 發布:2025-01-28 00:56:41 瀏覽:534
安卓手機連拍圖片怎麼保存 發布:2025-01-28 00:48:12 瀏覽:645
怎麼看出車輛配置是不是舊車 發布:2025-01-28 00:42:42 瀏覽:3
編譯時的程序在哪裡 發布:2025-01-28 00:42:39 瀏覽:346
ftp協議的功能 發布:2025-01-28 00:38:53 瀏覽:251
linux統計ip 發布:2025-01-28 00:38:50 瀏覽:153
游戲解壓泥 發布:2025-01-28 00:38:04 瀏覽:728
curlandroid下載 發布:2025-01-28 00:20:10 瀏覽:873
數控車編程視頻 發布:2025-01-28 00:15:02 瀏覽:967