1. 程式人生 > >自增ID算法snowflake(雪花)

自增ID算法snowflake(雪花)

ges gui python 訂單 解決 mage ans log pytho

在數據庫主鍵設計上,比較常見的方法是采用自增ID(1開始,每次加1)和生成GUID。生成GUID的方式雖然簡單,但是由於采用的是無意義的字符串,推測會在數據量增大時造成訪問過慢,在基礎互聯網的系統設計中都不推薦采用。自增ID的方法雖然比較適合大數據量的場景,當時由於自增ID是按照順序增加的,數據記錄都是可以根據ID號進行推測出來,對於一些數據敏感的場景,不建議采用

最近在一篇文章中看到P2P網站處理訂單流水號的思路還不錯。該平臺設計時希望能使用一種簡單一些的ID,並且希望ID能夠按照時間有序生成。Twitter 的 Snowflake 算法解決了這種需求。在流水號服務中采用了這種算法。

snowflake算法的好處有兩點:一是純數字,二是整體上來說是按時間順序的。

技術分享

Scala版詳見開源項目https://github.com/twitter/snowflake
Python版詳見開源項目https://github.com/erans/pysnowflake
C#版詳見開源項目https://github.com/ccollie/snowflake-net

自增ID算法snowflake(雪花)