看開源中國出了這個top 50,看看大神們都出了什麼樣神奇的做品,看到第39個項目小編的標題是,「分佈式高效 ID 生產黑科技」,這個就吸引個人眼球了,由於個人工做經驗最多的就是交易流程,這個訂單號就是我要解決的問題,以前我也寫過一篇Twitter的Snowflake算法的學習博客。git
d算法
碼雲地址:https://gitee.com/yu120/sequence 受權協議:MIT併發
而後 clone 下來看看,其實裏面就有隻有兩個類 sequence 和 Systemclork分佈式
這邊sequence的實現基本和Twitter的Snowflake算法差很少,看下面那個結構說明你就明白了,數據的結構,還有每一段的意義,還有侷限性是什麼,好比每毫秒的最多能夠是多少。還有就是前面用了41位的時間戳,也限制了這種方法的使用年限,好像是69年,好像也沒多少年了,那時候數據怎麼處理,不錯科技的進步仍是很快的。高併發
實際上用的就是這個nextId方法,獲取一個ID,這邊主要做者本身實現了一個系統時間SystemClock,在獲取下一毫秒的方法中用到 tilNextMillis ,說明這裏暗藏玄機。性能
做者在類的註釋中寫着「高併發場景下System.currentTimeMillis()的性能問題的優化」學習
這邊主要用了定時頻率去獲取值,不知道這邊定時任務的時間是怎麼實現的,難道這樣就不會與系統時間有交互嗎?優化
只是以爲排39了,項目代碼怎麼這麼少get