国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

分布式ID系統(tǒng)設(shè)計(3)

這篇具有很好參考價值的文章主要介紹了分布式ID系統(tǒng)設(shè)計(3)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

分布式ID系統(tǒng)設(shè)計第三集

id-service-SnowFlake方案

第二集說了id-service-Segment-DB可以生成趨勢遞增的ID,但是ID號是可以計算的。不太適用于一些訂單ID生成的場景。因為存在數(shù)據(jù)暴露的風(fēng)險

比如我可以對比兩天的訂單ID號來大致計算出公司一天的訂單量。這個有點危險。

所以我們需要id-serviceSnowFlake方案。
id-service-snowFlake完全沿用snowFlake方案的bit位設(shè)計。即"1+41+10+12"的方式組裝id。對于workid的分配 基本上可以用手動配置。也可以借助Zk或者etcd CP實現(xiàn)的分布式協(xié)調(diào)者來配置。id-service-SnowFlake按照下面幾個步驟啟動:

1 啟動id-servicesnowFlake。連接zk或者etcd。在id-service-snowflake父節(jié)點下檢查自己是否已注冊。
2 如果有就直接拿到自己的workId zk/etcd 生成的id 啟動。
3 如果沒有就在根下面生成一個節(jié)點id 當(dāng)作自己的workId
4 start-service

弱依賴zk

如果想做到這一步就在本地osFile上。當(dāng)zk出現(xiàn)問題的時候,而服務(wù)又要重啟。這個時候這一步就能提高SLA.

解決時鐘問題

因為這種方案依賴時間。如果機(jī)器的時鐘發(fā)生了回?fù)?。那么有可能生成重?fù)的ID.那就需要解決這個問題。

1 首先服務(wù)注冊到zk 檢查自己是否寫如果zk
2 如果寫過 則用自己的系統(tǒng)時間與id-service-forever/{id}節(jié)點記錄時間做比較 如果小于則認(rèn)為機(jī)器時間發(fā)生了回?fù)?,這個時候可以選擇等待也可以選擇失敗退出。
3 如未寫過 則直接注冊進(jìn)去。然后對比其他節(jié)點的系統(tǒng)時間判斷自己系統(tǒng)時間是否正確??梢赃x擇輪訓(xùn)對比 也可以選擇相加/節(jié)點數(shù)對比
4 若時間正確就啟動 寫入zk
5 否則認(rèn)為有回?fù)堋?br> 6 每隔一段時間上報自己的系統(tǒng)時間寫入zk

由于強(qiáng)依賴時鐘,對時鐘要求很敏感。如果機(jī)器上有NTP時間服務(wù)同步的話。在他同步的時候會造成秒級的回?fù)堋?不過一般的公司也不會有這種業(yè)務(wù)量 除了大廠)。解決方案就是在回?fù)艿臅r候等待一段時間(1s 2s 這樣)或者直接重試.再或者直接摘除節(jié)點 告警。

代碼實現(xiàn)也很簡單
/發(fā)生了回?fù)?,此刻時間小于上次發(fā)號時間
if (timestamp < lastTimestamp) {

        long offset = lastTimestamp - timestamp;
        if (offset <= 5) {
            try {
            	//時間偏差大小小于5ms,則等待兩倍時間
                wait(offset << 1);//wait
                timestamp = timeGen();
                if (timestamp < lastTimestamp) {
                   //還是小于,拋異常并上報
                    throwClockBackwardsEx(timestamp);
                  }    
            } catch (InterruptedException e) {  
               throw  e;
            }
        } else {
            //throw
            throwClockBackwardsEx(timestamp);
        }
    }

從使用情況來看 基本沒有出現(xiàn)過問題。

id-service 情況

作為一個基架服務(wù)。性能應(yīng)該是最關(guān)心的 能在4C8G機(jī)器上跑出4w QPS.可用性也能保證9999.提供給6個BU 一天有個幾百萬的使用量。作為基架。高SLA和高性能是必須要保證的。文章來源地址http://www.zghlxwxcb.cn/news/detail-741258.html

到了這里,關(guān)于分布式ID系統(tǒng)設(shè)計(3)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 分布式id、系統(tǒng)id、業(yè)務(wù)id以及主鍵之間的關(guān)系

    連分布式ID都理解不了,你是剛培訓(xùn)出來冒充面試官的吧 分布式ID、系統(tǒng)ID、業(yè)務(wù)ID和主鍵的關(guān)系: 分布式ID:在分布式系統(tǒng)中,由于存在多個獨立的節(jié)點,為了保證每個節(jié)點生成的ID都是全局唯一的,就需要用到分布式ID。它是全局唯一的,可以用作數(shù)據(jù)庫的主鍵。 系統(tǒng)ID:一

    2024年02月15日
    瀏覽(18)
  • 【分布式】分布式ID

    【分布式】分布式ID

    分布式場景下,一張表可能分散到多個數(shù)據(jù)結(jié)點上。因此需要一些分布式ID的解決方案。 分布式ID需要有幾個特點: 全局唯一(必要) :在多個庫的主鍵放在一起也不會重復(fù) 有序(必要) :避免頻繁觸發(fā)索引重建 信息安全 :ID連續(xù),可以根據(jù)訂單編號計算一天的單量,造成

    2024年02月07日
    瀏覽(29)
  • 【分布式技術(shù)專題】「分布式ID系列」百度開源的分布式高性能的唯一ID生成器UidGenerator

    【分布式技術(shù)專題】「分布式ID系列」百度開源的分布式高性能的唯一ID生成器UidGenerator

    UidGenerator是什么 UidGenerator是百度開源的一款分布式高性能的唯一ID生成器,更詳細(xì)的情況可以查看官網(wǎng)集成文檔 uid-generator是基于Twitter開源的snowflake算法實現(xiàn)的一款唯一主鍵生成器(數(shù)據(jù)庫表的主鍵要求全局唯一是相當(dāng)重要的)。要求java8及以上版本。 snowflake算法 Snowflake算法描

    2024年02月04日
    瀏覽(22)
  • 分布式系統(tǒng)概念和設(shè)計——分布式共享內(nèi)存

    分布式系統(tǒng)概念和設(shè)計——分布式共享內(nèi)存

    分布式共享內(nèi)存 分布式共享內(nèi)存是在不共享物理內(nèi)存的計算機(jī)之間實現(xiàn)數(shù)據(jù)的共享的一個抽象。 有一個底層運行的系統(tǒng)保證其透明性,但是進(jìn)程還是根據(jù)內(nèi)存的分布處理物理內(nèi)存的分布式能力 DMS最關(guān)鍵點: 不需要關(guān)心數(shù)據(jù)的通信,消息傳遞能力是巨大的底層支持。 生存周

    2024年02月10日
    瀏覽(30)
  • 分布式系統(tǒng)架構(gòu)設(shè)計之分布式緩存技術(shù)選型

    分布式系統(tǒng)架構(gòu)設(shè)計之分布式緩存技術(shù)選型

    隨著互聯(lián)網(wǎng)業(yè)務(wù)的快速發(fā)展,分布式系統(tǒng)已經(jīng)成為了解決大規(guī)模并發(fā)請求、高可用性、可擴(kuò)展性等問題的重要手段。在分布式系統(tǒng)中,緩存作為提高系統(tǒng)性能的關(guān)鍵技術(shù),能夠顯著降低數(shù)據(jù)庫負(fù)載、減少網(wǎng)絡(luò)延遲、提高數(shù)據(jù)訪問速度。當(dāng)面對大量并發(fā)請求時,如果每次都直接

    2024年02月03日
    瀏覽(519)
  • 分布式id實戰(zhàn)

    分布式id實戰(zhàn)

    目錄 常用方式 特征 潛在問題 信息安全 高性能 UUID 雪花算法 數(shù)據(jù)庫生成 美團(tuán)Leaf方案 Leaf-segment 數(shù)據(jù)庫方案 Leaf-snowflake 方案 uuid 雪花算法 數(shù)據(jù)庫主鍵 全局唯一 趨勢遞增 信息安全 如果id連續(xù)遞增, 容易被爬蟲, 批量下載數(shù)據(jù) 如果訂單id是連續(xù)遞增, 容易被競爭對手推算出日交

    2024年02月21日
    瀏覽(30)
  • 分布式ID(2):雪花算法生成ID

    分布式ID(2):雪花算法生成ID

    1 雪花算法簡介 這種方案大致來說是一種以劃分命名空間(UUID也算,由于比較常見,所以單獨分析)來生成ID的一種算法,這種方案把64-bit分別劃分成多段,分開來標(biāo)示機(jī)器、時間等,比如在snowflake中的64-bit分別表示如下圖(圖片來自網(wǎng)絡(luò))所示: 41-bit的時間可以表示(1L

    2024年01月20日
    瀏覽(30)
  • 分布式唯一ID實戰(zhàn)

    分布式唯一ID實戰(zhàn)

    UUID的標(biāo)準(zhǔn)形式包含32個16進(jìn)制數(shù)字,以 “ - ” 進(jìn)行分割,形式為 8-4-4-4-12的32個字符,實例 550e8400-e29b-41d4-a716-446655440000。 優(yōu)點: - 性能高,本地生成,沒有網(wǎng)絡(luò)消耗 缺點: - 不易存儲,長度太長,32個16進(jìn)制數(shù)字,128位 - 不安全,會暴露MAC地址 - UUID作為MySQL主鍵,會導(dǎo)致索引

    2024年02月12日
    瀏覽(93)
  • 算法、語言混編、分布式鎖與分布式ID、IO模型

    算法、語言混編、分布式鎖與分布式ID、IO模型

    數(shù)據(jù)結(jié)構(gòu)和算法是程序的基石。我們使用的所有數(shù)據(jù)類型就是一種數(shù)據(jù)結(jié)構(gòu)(數(shù)據(jù)的組織形式),寫的程序邏輯就是算法。 算法是指用來操作數(shù)據(jù)、解決程序問題的一組方法。 對于同一個問題,使用不同的算法,也許最終得到的結(jié)果是一樣的,但在過程中消耗的資源(空間

    2024年02月08日
    瀏覽(21)
  • 【系統(tǒng)架構(gòu)】分布式系統(tǒng)架構(gòu)設(shè)計

    【系統(tǒng)架構(gòu)】分布式系統(tǒng)架構(gòu)設(shè)計

    分布式系統(tǒng)是指由多個計算機(jī)節(jié)點組成的一個系統(tǒng),這些節(jié)點通過網(wǎng)絡(luò)互相連接,并協(xié)同工作完成某個任務(wù)。 與單個計算機(jī)相比,分布式系統(tǒng)具有更高的可擴(kuò)展性、可靠性和性能等優(yōu)勢,因此廣泛應(yīng)用于大規(guī)模數(shù)據(jù)處理、高并發(fā)訪問、分布式存儲等領(lǐng)域。 分布式系統(tǒng)的設(shè)計

    2024年02月15日
    瀏覽(107)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包