這是乙個分布式場景下全域性唯一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.逐漸遞增...