<cite id="ffb66"></cite><cite id="ffb66"><track id="ffb66"></track></cite>
      <legend id="ffb66"><li id="ffb66"></li></legend>
      色婷婷久,激情色播,久久久无码专区,亚洲中文字幕av,国产成人A片,av无码免费,精品久久国产,99视频精品3
      網(wǎng)易首頁 > 網(wǎng)易號(hào) > 正文 申請入駐

      雪花算法 ID 重復(fù)了?慘痛教訓(xùn):請勿輕易造輪子!

      0
      分享至

      Java精選面試題(微信小程序):5000+道面試題和選擇題,包含Java基礎(chǔ)、并發(fā)、JVM、線程、MQ系列、Redis、Spring系列、Elasticsearch、Docker、K8s、Flink、Spark、架構(gòu)設(shè)計(jì)、大廠真題等,在線隨時(shí)刷題!

      最近我們線上系統(tǒng)發(fā)生了一起嚴(yán)重事故:訂單號(hào)/流水號(hào)出現(xiàn)了重復(fù),影響了核心業(yè)務(wù)流程。最終定位到根源:一個(gè)自研的二方包雪花算法ID生成器出現(xiàn)了問題。

      下面我們來回顧一下雪花算法的標(biāo)準(zhǔn)結(jié)構(gòu),分析問題出在哪,并總結(jié)一些通用的設(shè)計(jì)建議。

      一、標(biāo)準(zhǔn)雪花算法(Snowflake)

      標(biāo)準(zhǔn)的Snowflake ID由一個(gè)64位long型整數(shù)構(gòu)成:

      +----------------------------------------------------------------------------------------------------+

      |1Bit |41Bits 時(shí)間戳 |5Bits 數(shù)據(jù)中心ID |5Bits 機(jī)器ID |12Bits 序列號(hào) |

      +----------------------------------------------------------------------------------------------------+

      • 1位符號(hào)位:始終為0,確保生成正數(shù)。

      • 41位時(shí)間戳:記錄與固定起始時(shí)間的毫秒差,可支持約69年。

      • 10位機(jī)器ID:用于標(biāo)識(shí)不同節(jié)點(diǎn)。

      • 12位序列號(hào):在同一毫秒內(nèi)生成多個(gè)ID時(shí)使用,最多支持每毫秒生成4096個(gè)ID。

      優(yōu)點(diǎn):

      • 高性能生成唯一ID,按時(shí)間有序,適用于分布式環(huán)境。

      二、我們的“定制版”雪花算法:問題在哪?

      我們使用的二方包雪花算法結(jié)構(gòu)如下(根據(jù)排查推測):

      +----------------------------------------------------------------------------------------------------+

      |31Bits 時(shí)間戳Delta |13Bits 數(shù)據(jù)中心ID |4Bits 工作ID |8Bits 業(yè)務(wù)ID |8Bits 序列號(hào) |

      +----------------------------------------------------------------------------------------------------+

      看起來字段豐富,但存在嚴(yán)重問題:

      1. 時(shí)間戳僅保留31位,最多支持24.85天!

      • 左移33位后只用31位時(shí)間戳,

      • 超過 2312^{31}231 毫秒后開始循環(huán),

      • 我們自定義的起始時(shí)間是2018年,2025年時(shí)早已繞了無數(shù)圈。

      2. BusinessId 用的是 IP 最后一段

      • 使用的IPy用點(diǎn)分隔的最后一位,即192.168.0.1的1,極容易重復(fù)。

      3. WorkId 和 DataCenterId 未配置,全為0

      • 相當(dāng)于所有實(shí)例共享同一節(jié)點(diǎn)標(biāo)識(shí),唯一性形同虛設(shè)。

      • 最終結(jié)果:時(shí)間輪回 + IP沖突 + 序列重復(fù),ID徹底撞車。

      三、教訓(xùn)總結(jié)

      通用組件不建議自研

      雪花算法涉及時(shí)鐘回?fù)堋⑽贿\(yùn)算、分布式協(xié)調(diào)等關(guān)鍵細(xì)節(jié),成熟組件更穩(wěn)妥。

      不盲信二方包

      無論誰寫的代碼,都要看清實(shí)現(xiàn)邏輯,理解其唯一性保障機(jī)制。

      合理設(shè)置機(jī)器ID

      靠IP后綴太脆弱,建議集中規(guī)劃,統(tǒng)一分配Worker ID和DataCenter ID。

      提前覆蓋邊界場景

      模擬長時(shí)間運(yùn)行、序列號(hào)溢出、時(shí)間回?fù)艿葮O端情況,確保系統(tǒng)穩(wěn)健。

      四、推薦做法

      使用成熟的開源實(shí)現(xiàn),如 Hutool、Baomidou 等:

      // Hutool 示例

      Snowflake snowflake = IdUtil.getSnowflake(1,1);

      longid = snowflake.nextId();

      // Baomidou 示例(支持從 IP/MAC 自動(dòng)推導(dǎo),也可手動(dòng)指定)

      DefaultIdentifierGenerator generator =newDefaultIdentifierGenerator(1,1);// workerId=1, dataCenterId=1

      longid = generator.nextId("user");

      對于中大型系統(tǒng),DataCenterId 一般用來標(biāo)識(shí)不同的機(jī)房或者 AZ (Availability Zone)。

      WorkerId 的配置策略可以根據(jù)系統(tǒng)規(guī)模逐步演進(jìn):

      • 簡單方式:通過配置文件手動(dòng)指定。這種方式配置簡便,適用于開發(fā)環(huán)境或單機(jī)部署。

      • 標(biāo)準(zhǔn)方式:將 IP 與端口號(hào)(或進(jìn)程號(hào))拼接后進(jìn)行哈希,再對 WorkerId 總數(shù)取模。具備一定自動(dòng)化能力,不依賴外部系統(tǒng),適用于中小規(guī)模部署。

      • 中級(jí)方案:依賴注冊中心(如 Eureka、Nacos),在服務(wù)注冊時(shí)分配編號(hào),結(jié)合服務(wù)ID保障唯一性。

      • 高級(jí)方案:使用 Redis、Zookeeper 等集中協(xié)調(diào) WorkerId 分配與釋放,支持動(dòng)態(tài)擴(kuò)容、避免沖突。

      隨著系統(tǒng)規(guī)模擴(kuò)大,推薦逐步引入更復(fù)雜但更穩(wěn)妥的機(jī)制,避免一開始就過度設(shè)計(jì)。

      五、其它建議:不要將業(yè)務(wù)標(biāo)志拼入ID中

      有時(shí)我們?yōu)榱舜_保唯一性,會(huì)試圖將業(yè)務(wù)信息(如類型前綴、模塊編號(hào))拼接進(jìn)ID。但這種做法會(huì)帶來一系列問題:

      • 會(huì)導(dǎo)致 ID 非全數(shù)字,失去原本按時(shí)間遞增的排序特性,影響數(shù)據(jù)庫索引效率;

      • ID長度變得不規(guī)則或偏長,可能增加存儲(chǔ)成本,也會(huì)影響日志展示、用戶體驗(yàn);

      • 若業(yè)務(wù)字段含義變動(dòng),還可能造成數(shù)據(jù)兼容性問題。

      更穩(wěn)妥的做法是將業(yè)務(wù)字段單獨(dú)存儲(chǔ),ID僅用于唯一標(biāo)識(shí)和排序。

      六、結(jié)語

      別為造輪子而造輪子,尤其在通用組件上,不可抱僥幸心理。

      如果你也有雪花算法的踩坑經(jīng)驗(yàn),歡迎交流分享!

      作者:MrWho

      來源:https://juejin.cn/post/7507203999102648360

      公眾號(hào)“Java精選”所發(fā)表內(nèi)容注明來源的,版權(quán)歸原出處所有(無法查證版權(quán)的或者未注明出處的均來自網(wǎng)絡(luò),系轉(zhuǎn)載,轉(zhuǎn)載的目的在于傳遞更多信息,版權(quán)屬于原作者。如有侵權(quán),請聯(lián)系,筆者會(huì)第一時(shí)間刪除處理!

      最近有很多人問,有沒有讀者交流群!加入方式很簡單,公眾號(hào)Java精選,回復(fù)“加群”,即可入群!

      文章有幫助的話,點(diǎn)在看,轉(zhuǎn)發(fā)吧!

      特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。

      Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

      相關(guān)推薦
      熱點(diǎn)推薦
      海口這一天:梅婷面相兇,海陸性感,毛曉彤好美,陳都靈真敢穿

      海口這一天:梅婷面相兇,海陸性感,毛曉彤好美,陳都靈真敢穿

      娛樂圈筆娛君
      2025-12-20 18:07:34
      金毛事件大反轉(zhuǎn)!為減刑出賣白三姐,20萬轉(zhuǎn)賬記錄撕開人性遮羞布

      金毛事件大反轉(zhuǎn)!為減刑出賣白三姐,20萬轉(zhuǎn)賬記錄撕開人性遮羞布

      魔都姐姐雜談
      2025-12-20 04:48:09
      趙今麥終于開啟御姐路線了,黑色絲襪搭配嫩粉色西服美出新高度!

      趙今麥終于開啟御姐路線了,黑色絲襪搭配嫩粉色西服美出新高度!

      說不盡的人心
      2025-12-19 12:07:00
      怪不得近來市場上豬肉越來越賤,如今每斤豬肉已經(jīng)是幾元錢一斤。

      怪不得近來市場上豬肉越來越賤,如今每斤豬肉已經(jīng)是幾元錢一斤。

      愛看劇的阿峰
      2025-12-21 04:53:54
      愛德華茲:我曾在比賽中偷拍了幾張庫里的照片,去tm的規(guī)定

      愛德華茲:我曾在比賽中偷拍了幾張庫里的照片,去tm的規(guī)定

      懂球帝
      2025-12-20 09:50:13
      柬埔寨GDP的40%—60%來源電詐 幕后以華人資本集團(tuán)為主

      柬埔寨GDP的40%—60%來源電詐 幕后以華人資本集團(tuán)為主

      原某報(bào)記者
      2025-12-18 10:17:38
      別吃太清淡,181個(gè)國家研究:吃得越咸,壽命可能越長?真相來了

      別吃太清淡,181個(gè)國家研究:吃得越咸,壽命可能越長?真相來了

      岐黃傳人孫大夫
      2025-12-17 09:05:37
      丈夫外派到迪拜2年,我半夜起來蓋被子,3歲兒子突然說:媽媽你知道嗎?爸爸在窗外對我招手,我腿都嚇軟了

      丈夫外派到迪拜2年,我半夜起來蓋被子,3歲兒子突然說:媽媽你知道嗎?爸爸在窗外對我招手,我腿都嚇軟了

      起飛做故事
      2025-12-17 19:19:06
      回顧探花大神:害人害己,多位女主被親戚認(rèn)出當(dāng)場“社死”

      回顧探花大神:害人害己,多位女主被親戚認(rèn)出當(dāng)場“社死”

      就一點(diǎn)
      2025-10-09 12:19:42
      龐叔令點(diǎn)名徐湖平,曾任南博副院長,曾經(jīng)和宋美齡干兒子一同服役

      龐叔令點(diǎn)名徐湖平,曾任南博副院長,曾經(jīng)和宋美齡干兒子一同服役

      王鶔吃吃喝喝
      2025-12-20 10:54:15
      英超最新積分戰(zhàn)報(bào) 阿森納曼城齊贏球 利物浦追上切爾西重回前5

      英超最新積分戰(zhàn)報(bào) 阿森納曼城齊贏球 利物浦追上切爾西重回前5

      狂言體育
      2025-12-21 07:44:18
      研究所沒錢了?河南一研究所發(fā)全體員工告知函:8月起獎(jiǎng)金全部取消

      研究所沒錢了?河南一研究所發(fā)全體員工告知函:8月起獎(jiǎng)金全部取消

      趣筆談
      2025-12-20 10:10:01
      楊鳴:這賽季聯(lián)賽可能是歷史上最激烈的,末節(jié)很容易出現(xiàn)逆轉(zhuǎn)

      楊鳴:這賽季聯(lián)賽可能是歷史上最激烈的,末節(jié)很容易出現(xiàn)逆轉(zhuǎn)

      懂球帝
      2025-12-20 21:45:12
      10分復(fù)仇卻難言開心!山東贏得丑陋,邱彪難逃其咎,1人快退貨吧

      10分復(fù)仇卻難言開心!山東贏得丑陋,邱彪難逃其咎,1人快退貨吧

      萌蘭聊個(gè)球
      2025-12-20 21:49:04
      深圳烤雞少年塌房!從日入過萬到被舉報(bào),所謂秘方竟是“肉寶王”

      深圳烤雞少年塌房!從日入過萬到被舉報(bào),所謂秘方竟是“肉寶王”

      鋭娛之樂
      2025-12-20 23:17:42
      中戲院長郝戎風(fēng)波升級(jí),被扒兩屆藝考成績雷同,易烊千璽牽連其中

      中戲院長郝戎風(fēng)波升級(jí),被扒兩屆藝考成績雷同,易烊千璽牽連其中

      萌神木木
      2025-12-20 13:14:47
      洪森被泰國逼到墻角,韜光養(yǎng)晦的西哈莫尼王權(quán)要回歸,歷史很精彩

      洪森被泰國逼到墻角,韜光養(yǎng)晦的西哈莫尼王權(quán)要回歸,歷史很精彩

      我心縱橫天地間
      2025-12-16 12:31:05
      邱毅:流傳的屠殺中國人的日本軍官照片是高市早苗祖父高市利彥!

      邱毅:流傳的屠殺中國人的日本軍官照片是高市早苗祖父高市利彥!

      南權(quán)先生
      2025-12-16 16:22:32
      好久不見!易建聯(lián)現(xiàn)身球館 身材保持超好 球迷調(diào)侃他在回憶往昔

      好久不見!易建聯(lián)現(xiàn)身球館 身材保持超好 球迷調(diào)侃他在回憶往昔

      胖子噴球
      2025-12-20 21:03:36
      山東濟(jì)南瞞不住了!大明湖底挖出鐵證,5000年城脈從未中斷

      山東濟(jì)南瞞不住了!大明湖底挖出鐵證,5000年城脈從未中斷

      小影的娛樂
      2025-12-21 01:40:53
      2025-12-21 09:00:49
      Java精選
      Java精選
      一場永遠(yuǎn)也演不完的戲
      1764文章數(shù) 3859關(guān)注度
      往期回顧 全部

      科技要聞

      生態(tài)適配已超95% 鴻蒙下一關(guān):十萬個(gè)應(yīng)用

      頭條要聞

      臺(tái)北襲擊案行兇者被造謠是"大陸籍" 蔣萬安駁斥

      頭條要聞

      臺(tái)北襲擊案行兇者被造謠是"大陸籍" 蔣萬安駁斥

      體育要聞

      我開了20年大巴,現(xiàn)在是一名西甲主帥

      娛樂要聞

      2026央視跨年晚會(huì)陣容曝光,豪華陣仗

      財(cái)經(jīng)要聞

      求解“地方財(cái)政困難”

      汽車要聞

      嵐圖推進(jìn)L3量產(chǎn)測試 已完成11萬公里實(shí)際道路驗(yàn)證

      態(tài)度原創(chuàng)

      游戲
      健康
      教育
      手機(jī)
      家居

      德瑪西亞杯:肉雞沒上,二隊(duì)無力抵抗,EDG零封IG

      這些新療法,讓化療不再那么痛苦

      教育要聞

      于潔:學(xué)生課堂睡覺、作業(yè)擺爛、屢教不改……教師該如何應(yīng)對?

      手機(jī)要聞

      iOS 26.1驗(yàn)證已關(guān)閉!蘋果將暫時(shí)停更iOS 26.3測試版

      家居要聞

      高端私宅 理想隱居圣地

      無障礙瀏覽 進(jìn)入關(guān)懷版 主站蜘蛛池模板: 影视先锋av资源噜噜| 成年无码av片在线蜜芽| 欧美日韩人成综合在线播放| 国产成人专区| 精品一区二区三区在线观看l| 四虎影院176| 亚洲成a∨人片在线观看不卡| 免费vA片| 久久婷婷大香萑太香蕉av人| 亚洲成a∨人片在线观看不卡| 纳雍县| 97精品| 欧美成人精品三级网站| 久久av高潮av无码av喷吹| 一区二区三区毛VⅤ| 欧美xb| 成人欧美日韩一区二区三区| 国产精品+日韩精品+在线播放| 内射极品少妇xxxxxhd| 国产人妻无套一区二区普通话对白| 欧美18videosex性欧美tube1080 | 和林格尔县| 中文无码日| 强d乱码中文字幕熟女1000部 | 欧美在线观看www| 波多野结衣中文字幕一区二区三区| 人妻中文字幕久久| 亚洲熟女精品中文字幕m| 97精品伊人久久久大香线蕉| 鲁一鲁AV| 和田县| 美女福利导航| 国产精品久久久久久福利69堂| 国产精品亚洲а∨天堂2021| 69天堂| 桐城市| 一区二区三区国产| 欧美成人午夜无码A片秀色直播 | 国产精品免费无遮挡无码永久视频 | 定州市| 尹人97|