上一篇 <<<基于數(shù)據(jù)庫自增方式實(shí)現(xiàn)全局ID
下一篇 >>>基于Twitter的snowflake(雪花)算法實(shí)現(xiàn)全局ID
利用全球唯一UUID生成訂單號 一般UUID在生成Token領(lǐng)域使用比較多
UUID基本概念
UUID是指在一臺機(jī)器上生成的數(shù)字绍载,它保證對在同一時空中的所有機(jī)器都是唯一的惑淳。
UUID組成部分
當(dāng)前日期和時間+時鐘序列+隨機(jī)數(shù)+全局唯一的IEEE機(jī)器識別號
全局唯一的IEEE機(jī)器識別號:如果有網(wǎng)卡欢顷,從網(wǎng)卡MAC地址獲得晚缩,沒有網(wǎng)卡以其他方式獲得。
優(yōu)點(diǎn)
簡單莺治,代碼方便
生成ID性能非常好捂寿,基本不會有性能問題
全球唯一,在遇見數(shù)據(jù)遷移魁瞪,系統(tǒng)數(shù)據(jù)合并穆律,或者數(shù)據(jù)庫變更等情況下,可以從容應(yīng)對
缺點(diǎn)
沒有排序导俘,無法保證趨勢遞增
UUID往往是使用字符串存儲峦耘,查詢的效率比較低
存儲空間比較大,如果是海量數(shù)據(jù)庫旅薄,就需要考慮存儲量的問題辅髓。
傳輸數(shù)據(jù)量大
36位,中間的“-”是用來區(qū)分組成部分的少梁,可以直接去掉
寫法:
String uuid = UUID.randomUUID().toString().replace("-", "”);
推薦閱讀:
<<<分布式全局ID生成總覽
<<<基于數(shù)據(jù)庫自增方式實(shí)現(xiàn)全局ID
<<<基于Twitter的snowflake(雪花)算法實(shí)現(xiàn)全局ID
<<<基于Redis生成全局ID