插件推薦-twitter分佈式主鍵id生成器與SID

插件推薦-twitter分佈式主鍵id生成器與SID

推薦一個插件,那就是idworker,用了一年了,還是挺好用,先來說說幹嘛的吧,鑑於現在主鍵的生成模式先來探討一下

1、id自增:比較普遍,但是在數據備份恢復的時候,容易出錯,只適用於小數據量的表,或者小型後臺管理系統

2、uuid:uuid可以保證不重複,但是不建議使用,理由是實在太長了,一竄字符串不人性化,uuid適合token,據我所知,我一朋友的公司的部分項目的所有id都是使用的uuid,鑑於是個大型erp,也就無所謂了...

3、時間戳+隨機數字:比較簡單的做法,可以這麼做,但是不建議大型系統使用

4、使用redis自增,這樣就需要搭建單獨的一個id服務器,每次id使用後就要+1,由於redis是單線程的,適用於這樣的模式,當然了,阿里的redis不能用,理由是阿里redis是多線程的,自己重新開發過的了,使用redis還有個場景是用來做秒殺,這個是後話了,以後再聊

5、分佈式idwoker,這個是twiter自己開發維護的一個id生成器,非常好用,可以分佈式部署,也能直接使用,非常方便,可以說基本上不會發生id重複的情況,而id看似也很人性化

這是正在使用的訂單表id,可以看出,id為16位,外加10位sid,sid是simple idworker的簡寫

插件推薦-twitter分佈式主鍵id生成器與SID

這是騰訊天天快報的主鍵,可以看到也是同樣的做法,由此可證,非常實用

插件推薦-twitter分佈式主鍵id生成器與SID

看看用法:

首先你要在spring配置文件中聲明,這樣表示他是個單例,idworker要在單例下使用,不然id會重複

插件推薦-twitter分佈式主鍵id生成器與SID

然後注入

插件推薦-twitter分佈式主鍵id生成器與SID

最後直接nextShort就可以使用

插件推薦-twitter分佈式主鍵id生成器與SID

相關代碼如下,有興趣可以看看,一個是server端,一個是client端

https://github.com/leechenxiang/idworker

https://github.com/leechenxiang/idworker-client


分享到:


相關文章: