国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

雪花算法(04)機器信息

wmui / 1555人閱讀

摘要:時間部分生成后,下一步是機器信息,占位。下面可以定義兩個的了因為機器信息分成了兩部分分別生成的,所以,要分別位移,數據要向左位移位,機器要向左位移位。那么雪花算法可以部署的機器數就是個,這是機器信息的限制,現在看這數字也是足足的夠了。

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

/** 設置數據中心id為1 */

private static final long DATA_ID = 1L;

/** 設置機器id為2 */

private static final long WORK_ID = 2L;

也可以根據自己機器的情況自動生成,不過有很小很小的風險會重復,這個風險碰到的幾率不大,當然如果能手動設置還是最好的。我們來說一下自己生成的情況。

我們的jdk庫中,有api可以獲取本地機器的hostname和hostaddress,我們來看一下:

我們來把hostname的信息作為數據中心id,把hostaddress的信息作為機器id,如何把兩個字符串改為兩個數字id呢?其實很簡單。獲取字符串的字節數組,然后把數組的每個數字相加,對節點數的最大值取余:

每個id的長度都是5,二進制中5個1的最大值就是31,所以數據id和機器id每個的最大值也是31,下面是獲取兩個id的方法:

如果出現異常,返回一個隨機數,保證id的可靠性。下面可以定義兩個的id了:

因為機器信息分成了兩部分分別生成的,所以,要分別位移,數據id要向左位移17位,機器id要向左位移12位。正好占據10位。

現在我們再來看下第二部分機器信息的限制,這兩個id每個的值都占五位,二進制的值從 00000 到11111,整數的范圍就是0-31之間共32個。那么雪花算法可以部署的機器數就是32*32=1024個,這是機器信息的限制,現在看這數字也是足足的夠了。注意如果自己給這兩個參數賦值,也要限制在31之內。

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/76157.html

相關文章

  • 雪花算法(01)介紹

    摘要:雪花算法生成的最終結果其實就是一個類型的長整型數字,這是一個大前提算法所有的內容都是針對這個數字進行運算的。根據上面的理論可以開始學習雪花算法。 針對每個公司,隨著服務化演進,單個服務越來越多,數據庫分的越來越細,有的時候一個業務需要分成好幾個庫,這時候自增主鍵或者序列之類的主鍵id生成方式已經不再滿足需求,分布式系統中需要的是一個全局唯一的id生成規則。既然號稱在全局分布式系統中唯一...

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

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

    piapia 評論0 收藏0
  • 雪花算法(05)毫秒內序列

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

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

    摘要:前面的理論基礎和位運算都了解了,下面我們來生成雪花算法的第一部分,也就是時間部分。這個時候就有一個問題了,如果我們系統的時鐘錯了會不會有問題會所以要做判斷而且系統的時鐘錯誤也是雪花算法的一個致命問題,所以要一定要保證服務器的系統時間正確。 前面的理論基礎和位運算都了解了,下面我們來生成雪花算法的第一部分,也就是時間部分。時間部分的邏輯起始很簡單,就是規定一個起始時間戳,然后用當前時間戳...

    張紅新 評論0 收藏0
  • 關于生成訂單號規則的一些思考

    摘要:關于我為什么寫這篇文章是因為今天在做訂單模塊的時候看到之前的上描述的年月日用戶位企業位四位自增長數。背景對于其定訂單的生成。個人的看法是主要是唯一,其他關于業務方面的不是太太重要。自增實現了用于將的值遞增,并返回結果。 關于我為什么寫這篇文章是因為今天在做訂單模塊的時候,看到之前的PRD上描述的年月日+用戶id2位+企業id位+四位自增長數。然后竟被我反駁的突然改成了精確時間+4位自增...

    omgdog 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<