成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

雪花算法(04)機(jī)器信息

wmui / 1604人閱讀

摘要:時(shí)間部分生成后,下一步是機(jī)器信息,占位。下面可以定義兩個(gè)的了因?yàn)闄C(jī)器信息分成了兩部分分別生成的,所以,要分別位移,數(shù)據(jù)要向左位移位,機(jī)器要向左位移位。那么雪花算法可以部署的機(jī)器數(shù)就是個(gè),這是機(jī)器信息的限制,現(xiàn)在看這數(shù)字也是足足的夠了。

時(shí)間部分生成后,下一步是機(jī)器信息,占10位。我們這里把機(jī)器信息分成兩部分,一部分是數(shù)據(jù)中心id,占5位,一部分是機(jī)器id,占5位。這兩個(gè)id可以在部署項(xiàng)目的時(shí)候根據(jù)不同的機(jī)器自定義不同的id,這樣能人為的保障每個(gè)id都不同。比如:

/** 設(shè)置數(shù)據(jù)中心id為1 */

private static final long DATA_ID = 1L;

/** 設(shè)置機(jī)器id為2 */

private static final long WORK_ID = 2L;

也可以根據(jù)自己機(jī)器的情況自動(dòng)生成,不過(guò)有很小很小的風(fēng)險(xiǎn)會(huì)重復(fù),這個(gè)風(fēng)險(xiǎn)碰到的幾率不大,當(dāng)然如果能手動(dòng)設(shè)置還是最好的。我們來(lái)說(shuō)一下自己生成的情況。

我們的jdk庫(kù)中,有api可以獲取本地機(jī)器的hostname和hostaddress,我們來(lái)看一下:

我們來(lái)把hostname的信息作為數(shù)據(jù)中心id,把hostaddress的信息作為機(jī)器id,如何把兩個(gè)字符串改為兩個(gè)數(shù)字id呢?其實(shí)很簡(jiǎn)單。獲取字符串的字節(jié)數(shù)組,然后把數(shù)組的每個(gè)數(shù)字相加,對(duì)節(jié)點(diǎn)數(shù)的最大值取余:

每個(gè)id的長(zhǎng)度都是5,二進(jìn)制中5個(gè)1的最大值就是31,所以數(shù)據(jù)id和機(jī)器id每個(gè)的最大值也是31,下面是獲取兩個(gè)id的方法:

如果出現(xiàn)異常,返回一個(gè)隨機(jī)數(shù),保證id的可靠性。下面可以定義兩個(gè)的id了:

因?yàn)闄C(jī)器信息分成了兩部分分別生成的,所以,要分別位移,數(shù)據(jù)id要向左位移17位,機(jī)器id要向左位移12位。正好占據(jù)10位。

現(xiàn)在我們?cè)賮?lái)看下第二部分機(jī)器信息的限制,這兩個(gè)id每個(gè)的值都占五位,二進(jìn)制的值從 00000 到11111,整數(shù)的范圍就是0-31之間共32個(gè)。那么雪花算法可以部署的機(jī)器數(shù)就是32*32=1024個(gè),這是機(jī)器信息的限制,現(xiàn)在看這數(shù)字也是足足的夠了。注意如果自己給這兩個(gè)參數(shù)賦值,也要限制在31之內(nèi)。

代碼地址:https://gitee.com/blueses/sno... 04

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/76157.html

相關(guān)文章

  • 雪花算法(01)介紹

    摘要:雪花算法生成的最終結(jié)果其實(shí)就是一個(gè)類型的長(zhǎng)整型數(shù)字,這是一個(gè)大前提算法所有的內(nèi)容都是針對(duì)這個(gè)數(shù)字進(jìn)行運(yùn)算的。根據(jù)上面的理論可以開(kāi)始學(xué)習(xí)雪花算法。 針對(duì)每個(gè)公司,隨著服務(wù)化演進(jìn),單個(gè)服務(wù)越來(lái)越多,數(shù)據(jù)庫(kù)分的越來(lái)越細(xì),有的時(shí)候一個(gè)業(yè)務(wù)需要分成好幾個(gè)庫(kù),這時(shí)候自增主鍵或者序列之類的主鍵id生成方式已經(jīng)不再滿足需求,分布式系統(tǒng)中需要的是一個(gè)全局唯一的id生成規(guī)則。既然號(hào)稱在全局分布式系統(tǒng)中唯一...

    or0fun 評(píng)論0 收藏0
  • 雪花算法(07)雪花算法最終版

    摘要:雪花算法初步完成后,我們討論了幾個(gè)位運(yùn)算的寫(xiě)法,大家知道雪花算法一旦確定后,很多數(shù)字都是定死的,比如機(jī)器占多少位,或者時(shí)間向左位移多少,這些在算法具體邏輯確定后就不會(huì)變了。 雪花算法初步完成后,我們討論了幾個(gè)位運(yùn)算的寫(xiě)法,大家知道雪花算法一旦確定后,很多數(shù)字都是定死的,比如機(jī)器占多少位,或者時(shí)間向左位移多少,這些在算法具體邏輯確定后就不會(huì)變了。那么寫(xiě)成最后的數(shù)字和用位運(yùn)算計(jì)算出來(lái)有什么...

    piapia 評(píng)論0 收藏0
  • 雪花算法(05)毫秒內(nèi)序列

    摘要:前面的內(nèi)容把雪花算法的時(shí)間部分和機(jī)器信息部分都生成了,下面來(lái)生成最后一部分,就是毫秒內(nèi)的序列。這樣毫秒內(nèi)的序列數(shù)就算獲取成功了。 前面的內(nèi)容把雪花算法的時(shí)間部分和機(jī)器信息部分都生成了,下面來(lái)生成最后一部分,就是毫秒內(nèi)的序列。什么意思呢?我們?cè)谏蓵r(shí)間部分獲取時(shí)間戳的時(shí)候,使用 long now = System.currentTimeMillis(); 獲取,是個(gè)毫秒級(jí)的時(shí)間戳,但是即...

    時(shí)飛 評(píng)論0 收藏0
  • 雪花算法(03)生成時(shí)間

    摘要:前面的理論基礎(chǔ)和位運(yùn)算都了解了,下面我們來(lái)生成雪花算法的第一部分,也就是時(shí)間部分。這個(gè)時(shí)候就有一個(gè)問(wèn)題了,如果我們系統(tǒng)的時(shí)鐘錯(cuò)了會(huì)不會(huì)有問(wèn)題會(huì)所以要做判斷而且系統(tǒng)的時(shí)鐘錯(cuò)誤也是雪花算法的一個(gè)致命問(wèn)題,所以要一定要保證服務(wù)器的系統(tǒng)時(shí)間正確。 前面的理論基礎(chǔ)和位運(yùn)算都了解了,下面我們來(lái)生成雪花算法的第一部分,也就是時(shí)間部分。時(shí)間部分的邏輯起始很簡(jiǎn)單,就是規(guī)定一個(gè)起始時(shí)間戳,然后用當(dāng)前時(shí)間戳...

    張紅新 評(píng)論0 收藏0
  • 關(guān)于生成訂單號(hào)規(guī)則的一些思考

    摘要:關(guān)于我為什么寫(xiě)這篇文章是因?yàn)榻裉煸谧鲇唵文K的時(shí)候看到之前的上描述的年月日用戶位企業(yè)位四位自增長(zhǎng)數(shù)。背景對(duì)于其定訂單的生成。個(gè)人的看法是主要是唯一,其他關(guān)于業(yè)務(wù)方面的不是太太重要。自增實(shí)現(xiàn)了用于將的值遞增,并返回結(jié)果。 關(guān)于我為什么寫(xiě)這篇文章是因?yàn)榻裉煸谧鲇唵文K的時(shí)候,看到之前的PRD上描述的年月日+用戶id2位+企業(yè)id位+四位自增長(zhǎng)數(shù)。然后竟被我反駁的突然改成了精確時(shí)間+4位自增...

    omgdog 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<