乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      分布式ID生成--雪花算法

       timtxu 2019-09-05
      導(dǎo)讀:唯一ID可以標(biāo)識(shí)數(shù)據(jù)的唯一性,在分布式系統(tǒng)中生成唯一ID的方案有很多,常見(jiàn)的方式大概有以下三種
      • 依賴數(shù)據(jù)庫(kù),使用如MySQL自增列或Oracle序列等。

      • UUID隨機(jī)數(shù)

      • snowflake雪花算法(本文將要討論)

      一、數(shù)據(jù)庫(kù)和UUID方案的不足之處

      采用數(shù)據(jù)庫(kù)自增序列:

      • 讀寫分離時(shí),只有主節(jié)點(diǎn)可以進(jìn)行寫操作,可能有單點(diǎn)故障的風(fēng)險(xiǎn)

      • 分表分庫(kù),數(shù)據(jù)遷移合并等比較麻煩

      UUID隨機(jī)數(shù)

      • 采用無(wú)意義字符串,沒(méi)有排序

      • UUID使用字符串形式存儲(chǔ),數(shù)據(jù)量大時(shí)查詢效率比較低

      二、關(guān)于雪花算法

      有這么一種說(shuō)法,自然界中并不存在兩片完全一樣的雪花的。每一片雪花都擁有自己漂亮獨(dú)特的形狀、獨(dú)一無(wú)二。雪花算法也表示生成的ID如雪花般獨(dú)一無(wú)仁。

      雪花算法概述

      雪花算法生成的ID是純數(shù)字且具有時(shí)間順序的。其原始版本是scala版,后面出現(xiàn)了許多其他語(yǔ)言的版本如Java、C++等。

      組成結(jié)構(gòu)

      大致由:首位無(wú)效符、時(shí)間戳差值,機(jī)器(進(jìn)程)編碼,序列號(hào)四部分組成。

      特點(diǎn)(自增、有序、適合分布式場(chǎng)景)

      • 時(shí)間位:可以根據(jù)時(shí)間進(jìn)行排序,有助于提高查詢速度。

      • 機(jī)器id位:適用于分布式環(huán)境下對(duì)多節(jié)點(diǎn)的各個(gè)節(jié)點(diǎn)進(jìn)行標(biāo)識(shí),可以具體根據(jù)節(jié)點(diǎn)數(shù)和部署情況設(shè)計(jì)劃分機(jī)器位10位長(zhǎng)度,如劃分5位表示進(jìn)程位等。

      • 序列號(hào)位:是一系列的自增id,可以支持同一節(jié)點(diǎn)同一毫秒生成多個(gè)ID序號(hào),12位的計(jì)數(shù)序列號(hào)支持每個(gè)節(jié)點(diǎn)每毫秒產(chǎn)生4096個(gè)ID序號(hào)

      snowflake算法可以根據(jù)項(xiàng)目情況以及自身需要進(jìn)行一定的修改。

      三、雪花算法的缺點(diǎn)

      雪花算法在單機(jī)系統(tǒng)上ID是遞增的,但是在分布式系統(tǒng)多節(jié)點(diǎn)的情況下,所有節(jié)點(diǎn)的時(shí)鐘并不能保證不完全同步,所以有可能會(huì)出現(xiàn)不是全局遞增的情況。

      四、總結(jié)

      分布式唯一ID的方案有很多,本文主要討論了雪花算法,組成結(jié)構(gòu)大致分為了無(wú)效位、時(shí)間位、機(jī)器位和序列號(hào)位。其特點(diǎn)是自增、有序、純數(shù)字組成查詢效率高且不依賴于數(shù)據(jù)庫(kù)。適合在分布式的場(chǎng)景中應(yīng)用,可根據(jù)需求調(diào)整具體實(shí)現(xiàn)細(xì)節(jié)。

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多