mysql snowflake_雪花算法-snowflake
雪花算法-snowflake
分布式系統(tǒng)中,有一些需要使用全局唯一ID的場景,這種時(shí)候?yàn)榱朔乐笽D沖突可以使用36位的UUID,但是UUID有一些缺點(diǎn),首先他相對比較長,另外UUID一般是無序的。
有些時(shí)候我們希望能使用一種簡單一些的ID,并且希望ID能夠按照時(shí)間有序生成。
而twitter的snowflake解決了這種需求,最初Twitter把存儲(chǔ)系統(tǒng)從MySQL遷移到Cassandra,因?yàn)镃assandra沒有順序ID生成機(jī)制,所以開發(fā)了這樣一套全局唯一ID生成服務(wù)。
snowflake的結(jié)構(gòu)如下(每部分用-分開):
0 - 0000000000 0000000000 0000000000 0000000000 0 - 00000 - 00000 - 000000000000
第一位為未使用,接下來的41位為毫秒級(jí)時(shí)間(41位的長度可以使用69年),然后是5位datacenterId和5位workerId(10位的長度最多支持部署1024個(gè)節(jié)點(diǎn)) ,最后12位是毫秒內(nèi)的計(jì)數(shù)(12位的計(jì)數(shù)順序號(hào)支持每個(gè)節(jié)點(diǎn)每毫秒產(chǎn)生4096個(gè)ID序號(hào))
一共加起來剛好64位,為一個(gè)Long型。(轉(zhuǎn)換成字符串后長度最多19)
snowflake生成的ID整體上按照時(shí)間自增排序,并且整個(gè)分布式系統(tǒng)內(nèi)不會(huì)產(chǎn)生ID碰撞(由datacenter和workerId作區(qū)分),并且效率較高。經(jīng)測試snowflake每秒能夠產(chǎn)生26萬個(gè)ID。
總結(jié)
以上是生活随笔為你收集整理的mysql snowflake_雪花算法-snowflake的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python牛顿法计算平方根_常用的平方
- 下一篇: open函数返回-1_4.6 linux