18 分布式全域性id實踐 1 4

2021-08-18 11:47:36 字數 1043 閱讀 1538

1、利用mongodb的id

mongodb的objectid和snowflake演算法類似。它設計成輕量型的,不同的機器都能用全域性唯一的同種方法方便地生成它。mongodb 從一開始就設計用來作為分布式資料庫,處理多個節點是乙個核心要求。使其在分片環境中要容易生成得多。

前4 個位元組是從標準紀元開始的時間戳,單位為秒。時間戳,與隨後的5 個位元組組合起來,提供了秒級別的唯一性。由於時間戳在前,這意味著objectid 大致會按照插入的順序排列。這對於某些方面很有用,如將其作為索引提高效率。這4 個位元組也隱含了文件建立的時間。絕大多數客戶端類庫都會公開乙個方法從objectid 獲取這個資訊。

接下來的3 位元組是所在主機的唯一識別符號。通常是機器主機名的雜湊值。這樣就可以確保不同主機生成不同的objectid,不產生衝突。

為了確保在同一臺機器上併發的多個程序產生的objectid 是唯一的,接下來的兩位元組來自產生objectid 的程序識別符號(pid)。

前9 位元組保證了同一秒鐘不同機器不同程序產生的objectid 是唯一的。後3 位元組就是乙個自動增加的計數器,確保相同程序同一秒產生的objectid 也是不一樣的。同一秒鐘最多允許每個程序擁有2563(16 777 216)個不同的objectid。

//自增長id

private

static

intgetsequence2(long time) catch (interruptedexception e)

dbobject query = new basicdbobject();

query.put("coll_name", "0");

dbobject newdocument =new basicdbobject();

dbobject ret = table.findandmodify(query, newdocument);

if (ret == null)else

}

分布式 2分布式事務

分布式 1概述cap和base 分布式 2分布式事務 分布式 3分布式一致性演算法 分布式 4集群 分布式 5服務限流演算法 分布式 6分布式id 分布式 7效能壓測 分布式 8日誌鏈路跟蹤 分布式 9分布式鎖 redis鎖的幾種實現 參考 分布式系統間各種問題 宕機 網路不穩定 本地事務無法滿足需...

分布式隨筆1 分布式概述

分布式,好寬泛的話題,來來咱扯兩句。你乙個人再強壯,也扛不了100袋大公尺,單機的資源也很有限,大 的大資料量 高併發以及各種業務需求 童鞋們的web應用,伺服器 rdb mq 服務 快取以及各類基礎設施,更別說還有安全 大資料方面的需求 於是,我們常見的面向服務的dubbo springcloud...

Zookeeper場景實踐 (8) 分布式佇列

按照zookeeper典型應用場景一覽 裡的說法,分布式佇列有兩種,一種是常規的先進先出佇列,另一種是要等到佇列成員聚齊之後的才統一按序執行。第二種佇列可以先建立乙個 queue,賦值為n,表達佇列的大小。然後每個佇列成員加入時,就判斷是否達到佇列要求的大小,如果是可以進行下一步動作,否則繼續等待佇...