成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

分布式ID生成方案小結(jié)

Tecode / 2121人閱讀

摘要:幾乎所有的系統(tǒng)都存在生成唯一的需求,如用戶(hù)賬單等,由于系統(tǒng)通常是分布式架構(gòu),因而需要有合適的分布式生成方案。優(yōu)勢(shì)和數(shù)據(jù)庫(kù)自增方案類(lèi)似缺點(diǎn)同樣仍然有性能上限,依賴(lài)數(shù)據(jù)庫(kù)的可用性。使用時(shí),可以使用具體的場(chǎng)景選擇合適的方案。

幾乎所有的系統(tǒng)都存在生成唯一ID的需求,如用戶(hù)ID、賬單ID等,由于系統(tǒng)通常是分布式架構(gòu),因而需要有合適的分布式ID生成方案。

常見(jiàn)的分布式唯一ID方法有(歡迎補(bǔ)充):

時(shí)間戳
數(shù)據(jù)庫(kù)自增ID
UUID
放號(hào)系統(tǒng)
類(lèi)snowflake

一、時(shí)間戳
原理: 使用直接使用時(shí)間戳毫秒值或微秒值作為ID

缺點(diǎn): 每個(gè)時(shí)間單位只能生成一個(gè)ID, 在分布式架構(gòu)中不好保證唯一性。

適用場(chǎng)景: 一般很少適用這種方案

二、數(shù)據(jù)庫(kù)自增ID
原理: 基于MySQL等數(shù)據(jù)庫(kù)的auto_inscrement功能

優(yōu)勢(shì): 實(shí)現(xiàn)簡(jiǎn)單(數(shù)據(jù)庫(kù)自帶功能),生成的ID單調(diào)遞增,保證全局唯一;ID長(zhǎng)度靈活

缺點(diǎn): 存儲(chǔ)性能上限(MySQL性能), 對(duì)數(shù)據(jù)庫(kù)重度依賴(lài),一旦數(shù)據(jù)庫(kù)宕機(jī)則無(wú)法生產(chǎn)繼續(xù)生成ID。

三、UUID
原理: 多個(gè)版本,大致原理是 時(shí)間戳+機(jī)器ID+CPU時(shí)鐘+隨機(jī)數(shù)。 通過(guò)CPU時(shí)鐘保證本地唯一,通過(guò)機(jī)器ID+CPU時(shí)鐘保證全局唯一

優(yōu)勢(shì): 全局唯一,本地生成,沒(méi)有性能上限

缺點(diǎn): 生成ID過(guò)長(zhǎng)(32位16進(jìn)制字符),不是單調(diào)遞增

四、放號(hào)系統(tǒng)
原理: 通常是基于數(shù)據(jù)庫(kù)自增ID的方案改造,只是每次批量獲取一個(gè)號(hào)段,提升了性能。

優(yōu)勢(shì): 和”數(shù)據(jù)庫(kù)自增ID“方案類(lèi)似

缺點(diǎn): 同樣仍然有性能上限,依賴(lài)數(shù)據(jù)庫(kù)的可用性。數(shù)據(jù)庫(kù)主備切換時(shí)可能發(fā)生ID沖突。存儲(chǔ)耗時(shí)尖刺(更新DB時(shí)延時(shí)高)。因?yàn)樘?hào)段通常是定長(zhǎng),拓展性差,對(duì)流量波動(dòng)大的場(chǎng)景不太適用。

參考: https://tech.meituan.com/2019/03/07/open-source-project-leaf.html

升級(jí)
放號(hào)系統(tǒng)可以升級(jí)多個(gè)變種,比如采用多個(gè)數(shù)據(jù)庫(kù)(通過(guò)數(shù)據(jù)庫(kù)實(shí)例ID+數(shù)據(jù)庫(kù)自增ID), 在ID消耗完之前(比如消耗了50%)就預(yù)申請(qǐng)?zhí)柖蔚确桨浮?/p>

五、類(lèi)snowflake算法方案
原理: 時(shí)間戳+機(jī)器ID+序列號(hào)

優(yōu)勢(shì): uint64型,全局唯一,單調(diào)遞增,本地生成性能高,每秒能生成的ID較多。

缺點(diǎn): 需要解決三大問(wèn)題(增加了復(fù)雜度)

三大問(wèn)題
時(shí)間回?fù)?/strong>
時(shí)間回?fù)軉?wèn)題的幾種解決方案:

  1. 直接拋異常(體驗(yàn)不太好)
  2. 采用歷史時(shí)間(需要維護(hù)歷史時(shí)間,重啟時(shí)異常?)
  3. 多時(shí)間線(xiàn)(如果多次回?fù)苋匀徊荒芾^續(xù)放號(hào))

機(jī)器ID的分配和回收
機(jī)器ID的分配:

  1. 手動(dòng)配置
  2. 取IP地址的hash值(比較適用于IP地址hash值不沖突的場(chǎng)景)
  3. 引入其他系統(tǒng)維護(hù)機(jī)器ID

機(jī)器ID的上限
snowflake算法使用10bit存儲(chǔ)機(jī)器,所以機(jī)器ID的上線(xiàn)是2^10=1024; 不過(guò)這一般也能滿(mǎn)足業(yè)務(wù)需要了(只要做好分配和回收)

六、小結(jié)
實(shí)際業(yè)務(wù)中,<放號(hào)系統(tǒng)>和<類(lèi)snowflake>兩種方案適用的場(chǎng)景較廣。 使用時(shí),可以使用具體的場(chǎng)景選擇合適的方案。同時(shí),可以結(jié)合需要進(jìn)行優(yōu)化。

比如:用戶(hù)ID可以使用<放號(hào)系統(tǒng)>生成,訂單號(hào)等可以使用類(lèi)snowflake方案來(lái)生成。

使用類(lèi)snowflake方案時(shí),使用哪種方式分配機(jī)器ID也可以根據(jù)具體的場(chǎng)景選擇。 比如機(jī)器較少,各個(gè)進(jìn)程配置方便手動(dòng)配置時(shí),可以采用手動(dòng)配置的方式; 如果實(shí)在集群中,Pods節(jié)點(diǎn)的最后8bit肯定不同,Pods自動(dòng)擴(kuò)縮容的場(chǎng)景,可以采用IP地址Hash值的方式來(lái)生成機(jī)器ID。

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/125952.html

相關(guān)文章

  • 21世紀(jì)了還愚公移山?數(shù)據(jù)庫(kù)這么遷移更穩(wěn)定!

    摘要:數(shù)據(jù)遷移,主要利用阿里云數(shù)據(jù)傳輸服務(wù)的數(shù)據(jù)遷移能力,涉及到全量遷移增量遷移一致性校驗(yàn)及反向任務(wù)。小結(jié)通過(guò)周密的遷移方案設(shè)計(jì),以及強(qiáng)大的數(shù)據(jù)遷移工具的能力,閑魚(yú)商品庫(kù)順利完成億在線(xiàn)數(shù)據(jù)庫(kù)服務(wù)遷移,獨(dú)立的物理部署顯著提升商品庫(kù)在線(xiàn)服務(wù)的穩(wěn)定性。 背景 在系統(tǒng)的快速迭代過(guò)程中,業(yè)務(wù)系統(tǒng)往往部署在同一個(gè)物理庫(kù),沒(méi)有做核心數(shù)據(jù)和非核心數(shù)據(jù)的物理隔離。隨著數(shù)據(jù)量的擴(kuò)大這種情況會(huì)帶來(lái)穩(wěn)定性的風(fēng)險(xiǎn),如...

    ymyang 評(píng)論0 收藏0
  • webpack 構(gòu)建性能優(yōu)化策略小結(jié)

    摘要:但是,隨者工程開(kāi)發(fā)的復(fù)雜程度和代碼規(guī)模不斷地增加,暴露出來(lái)的各種性能問(wèn)題也愈發(fā)明顯,極大的影響著開(kāi)發(fā)過(guò)程中的體驗(yàn)。對(duì)應(yīng)的資源也可以直接由頁(yè)面外鏈載入,有效地減小了資源包的體積。 背景 如今前端工程化的概念早已經(jīng)深入人心,選擇一款合適的編譯和資源管理工具已經(jīng)成為了所有前端工程中的標(biāo)配,而在諸多的構(gòu)建工具中,webpack以其豐富的功能和靈活的配置而深受業(yè)內(nèi)吹捧,逐步取代了grunt和gu...

    hiYoHoo 評(píng)論0 收藏0
  • Webpack 3一些代碼體積優(yōu)化方案小結(jié)

    摘要:表示生成一個(gè)懶加載的,只有當(dāng)需要時(shí)才會(huì)被加載。主要是作用域提升,將所有模塊放在同一個(gè)作用域當(dāng)中,一方面能提高運(yùn)行速度,另一方面也能降低文件體積。前提是你的代碼是用模塊寫(xiě)的。參考文章學(xué)習(xí)小結(jié) 前言 之前接手公司一個(gè)前端項(xiàng)目,開(kāi)發(fā)了幾個(gè)月后越來(lái)越難以忍受項(xiàng)目結(jié)構(gòu)的混亂和打包體積的臃腫(腳手架和基本功能代碼都是從公司的其他項(xiàng)目復(fù)制過(guò)來(lái)的),如果不立即進(jìn)行重構(gòu),難以想象以后要怎么維護(hù)各個(gè)產(chǎn)品線(xiàn)...

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

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

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<