<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-35  評論-33  文章-0  trackbacks-0

            在當前的互聯網類產品中,如何高效可用的生成的一個全局自增ID,是一個比較有挑戰性的工作。我見過的一般的做法其實就是時間戳再加固定長度的隨機 字符串。這個方案其實有兩個問題,一個是生成的自增ID的可讀性,另外就是隨機,并不是真正的唯一,它是一個碰撞概率的。其它方案,如依賴數據的自增 ID,如果多個庫,可以通過不同的步長來實現可讀的序列。不過,這其實性能上肯定不可能很高。另外,會有單點的問題。所以,果斷放棄。在查看了目前比較成 熟的snowfake方案之后,感覺不錯。下圖是它的算法核心


    分3段進行詳細說明:

    Snowflake – 時間戳

    這里時間戳的細度是毫秒級。

    Snowflake – 工作機器id

    嚴格意義上來說這個bit段的使用可以是進程級,機器級的話你可以使用MAC地址來唯一標示工作機器工作進程級可以使用IP+Path來區分工作進程。如果工作機器比較少,可以使用配置文件來設置這個id是一個不錯的選擇,如果機器過多配置文件的維護是一個災難性的事情。

    Snowflake – 序列號

    序列號就是一系列的自增id(多線程建議使用atomic),為了處理在同一毫秒內需要給多條消息分配id,若同一毫秒把序列號用完了,則“等待至下一毫秒”。

    原理其實不復雜,下面我們結合Hazelcast(高可用的分布式內存框架)來進行實現。

     snowcase,基于hazelcast的自增實現。GITHUB地址https://github.com/noctarius/snowcast

    為什么選用hazelcast

    1 基于內存計算,速度得到了保證

    2 數據可以持久化,服務重啟之后,數據還可以讀取。

    3 每秒的并發可以支持W級別

    代碼示例

    1 首先需要添加依賴

    目前hazelcast的版本是3.5.5

    2 在容器里面注入服務

    這個是例用hazelcast的spi接口,封裝了自增的一個服務類

    3 簡單使用例子

    snowcase客戶端:

    自增ID服務:

    參照前面的原理說明,這里只傳遞了一個參數,就是時間戳。工作機器與序列號是使用的默認值 。其中工作機器的最大值是8129,最小值是128,序列號是hazelcast依據分布式自動生成的.至于seqName只是給這個自增ID取了別名。


    CASE測試:

    報告輸出:


    唯的一點缺陷就是因為它的長度是41BIT,這個方法的使用年限差不多是69年。

    具體是這樣算的:默認情況下有41個bit可以供使用,那么一共有T(1llu << 41)毫秒供你使用分配,年份 = T / (3600 * 24 * 365 * 1000) = 69.7年。

    其中有一段,我還沒有弄明白,T(1llu << 41),希望知道的同學提示,多謝。



    我的微信公眾號,歡迎溝通學習。
    posted on 2016-04-26 09:22 alexcai 閱讀(2143) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 日韩一级视频免费观看| av免费不卡国产观看| 日本高清免费不卡在线| 亚洲av成人综合网| 18成禁人视频免费网站| 久久精品亚洲中文字幕无码网站| 亚洲精品国产日韩无码AV永久免费网 | 91热久久免费精品99| 亚洲日韩乱码中文无码蜜桃臀网站| 一级特黄录像视频免费| 亚洲A丁香五香天堂网| 免费毛片毛片网址| 国产精品亚洲玖玖玖在线观看 | 国产免费小视频在线观看| 亚洲成aⅴ人片久青草影院按摩| 成年女人18级毛片毛片免费| 亚洲一区精彩视频| 在线观看免费大黄网站| 亚洲hairy多毛pics大全| 国产成人涩涩涩视频在线观看免费| 亚洲日韩精品无码专区加勒比 | 中文字幕亚洲一区二区三区| 一个人看的hd免费视频| 亚洲熟妇av一区二区三区漫画| 99视频在线观看免费| 亚洲第一精品在线视频| 国内精自视频品线六区免费| 亚洲 暴爽 AV人人爽日日碰| 国产在线a不卡免费视频| 永久免费无码日韩视频| 亚洲国产三级在线观看| 黄色网址免费观看| 亚洲av成本人无码网站| 2048亚洲精品国产| 久久久久成人片免费观看蜜芽 | 久久久久久精品免费看SSS| 亚洲真人无码永久在线观看| 国产一级理论免费版| 中文字幕无线码免费人妻| 久久久久亚洲AV无码专区首JN | 国产午夜无码视频免费网站|