系統唯一id生成分案有很多種,例如:資料庫 auto_increment,uuid,redis生成id(redis原子操作incr和incrby),twiitter的snowflake演算法,zookeeper生成id,mongodb的objectid,下面我們就看一下zookeeper實現分布式系統唯程式設計客棧一id。
public int idgen() throws exception
stat stat = client.setdata().withversion(-1).forpath(idnode);
return stat.getversion();
}注意:換了zookeeper,資料就要從0開始,還沒有直接可以修改指定數字那裡開始,只能寫程式一點點的建立,直到達到程式設計客棧你要想的資料 ,這是它最大的弊端。
本文標題: zookeeper全域性唯一id生成方案解析
本文位址:
全域性唯一遞增的id 趨勢有序的全域性唯一ID
常見方法 不足與優化 常見方法一 使用資料庫的 auto increment 來生成全域性唯一遞增id 優點 1 簡單,使用資料庫已有的功能 2 能夠保證唯一性 3 能夠保證遞增性 4 步長固定 缺點 1 可用性難以保證 資料庫常見架構是一主多從 讀寫分離,生成自增id是寫請求,主庫掛了就玩不轉了 ...
生成全域性唯一ID
a庫 b庫 c庫支援同時寫入 a庫初始值為1,自增為3,獲取的值一次是1 4 7 b庫初始值為2,自增為3,獲取的值一次是2 5 8 c庫初始值為3,自增為3,獲取的值一次是6 6 9 獲取id時可從三庫輪詢獲取 此方法使用資料庫原有的功能,所以相對簡單 能夠保證唯一性 能夠保證遞增性 id 之間的...
SnowFlake 生成全域性唯一id
public class snowflakeutil 外部呼叫獲取snowflakeutil的例項物件,確保不可變 return public static snowflakeutil get 初始化構造,無參構造有參函式,預設節點都是0 public snowflakeutil 設定機器節點和資料...