分布式場景全域性唯一ID生成工具類 非雪花演算法

2021-10-12 09:37:12 字數 1119 閱讀 6757

這是乙個分布式場景下全域性唯一id生成工具,類似於雪花演算法(snowflake)。如果你需要生成訂單號等類似字首+yymmddhhmmss+序列格式的全域性唯一性序列可以使用。

通過zk等維護worker_id這樣可以更好保證唯一性。

public

class

bizsequencegenarator

;private

static

final string worker_id = string.

valueof

(randomutils.

nextint

(100

,999))

;private

final atomicinteger next_counter;

private string prefix;

private

int incrmin;

private

int incrmax;

public

bizsequencegenarator

(string prefix,

int incrmax)",

"0"));

this

.incrmax = incrmax;

next_counter =

newatomicinteger

(randomutils.

nextint

(incrmin, incrmax/2)

);}public string next()

private string buildincrnumsequence()

string seq = string.

valueof

(next)

;//補0

int len =

5- seq.

length()

;if(len >0)

return seq;

}public

static

void

main

(string[

] args)

}}

分布式系統全域性唯一ID生成

在複雜分布式系統中,往往需要對大量的資料和訊息進行唯一標識。如在金融 電商 支付 等產品的系統中,資料日漸增長,對資料分庫分表後需要有乙個唯一id來標識一條資料或訊息,資料庫的自增id顯然不能滿足需求,此時乙個能夠生成全域性唯一id的系統是非常必要的。同時除了對id號碼自身的要求,業務還對id號生成...

分布式系統全域性唯一ID

全域性的唯一流水id 可以將乙個請求在分布式系統中的流轉路徑聚合。生成唯一id有兩種方法 持久型 使用資料庫表自增欄位或者sequence 生成,為了提高效率,每個應用節點可以快取乙個批次的id 如果機器重啟則可能會損失一部分id 但是這並不會產生任何問題。時間型 一般由機器號 業務號 時間 單節點...

分布式全域性唯一ID(二)

redis 實現分布式唯一id,其實這個也很簡單,主要使用redis string資料結構的 increment 方法。原理 使用increment方法,每次自加1,主要使用redis的高效能和單執行緒。實現方式 核心 如下,若是為了保證長度一致,其實可以預先初始化值。現在的這個是從1,2.逐漸遞增...