日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

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

 

導讀:唯一ID可以標識數據的唯一性,在分布式系統中生成唯一ID的方案有很多,常見的方式大概有以下三種

  • 依賴數據庫,使用如MySQL自增列或Oracle序列等。
  • UUID隨機數
  • snowflake雪花算法(本文將要討論)

一、數據庫和UUID方案的不足之處

采用數據庫自增序列:

  • 讀寫分離時,只有主節點可以進行寫操作,可能有單點故障的風險
  • 分表分庫,數據遷移合并等比較麻煩

UUID隨機數

  • 采用無意義字符串,沒有排序
  • UUID使用字符串形式存儲,數據量大時查詢效率比較低

二、關于雪花算法

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

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

 

雪花算法概述

雪花算法生成的ID是純數字且具有時間順序的。其原始版本是scala版,后面出現了許多其他語言的版本如JAVA、C++等。

組成結構

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

 

大致由:首位無效符、時間戳差值,機器(進程)編碼,序列號四部分組成。

特點(自增、有序、適合分布式場景)

  • 時間位:可以根據時間進行排序,有助于提高查詢速度。
  • 機器id位:適用于分布式環境下對多節點的各個節點進行標識,可以具體根據節點數和部署情況設計劃分機器位10位長度,如劃分5位表示進程位等。
  • 序列號位:是一系列的自增id,可以支持同一節點同一毫秒生成多個ID序號,12位的計數序列號支持每個節點每毫秒產生4096個ID序號

snowflake算法可以根據項目情況以及自身需要進行一定的修改。

三、雪花算法的缺點

雪花算法在單機系統上ID是遞增的,但是在分布式系統多節點的情況下,所有節點的時鐘并不能保證不完全同步,所以有可能會出現不是全局遞增的情況。

四、總結

分布式唯一ID的方案有很多,本文主要討論了雪花算法,組成結構大致分為了無效位、時間位、機器位和序列號位。其特點是自增、有序、純數字組成查詢效率高且不依賴于數據庫。適合在分布式的場景中應用,可根據需求調整具體實現細節。

感謝您的閱讀,如果喜歡本文歡迎關注和轉發,本頭條號將持續分享IT技術知識。對于文章內容有其他想法或意見建議等,歡迎提出共同討論共同進步。

分享到:
標簽:算法 雪花
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定