Zookeeper全域性唯一ID生成方案解析
阿新 • • 發佈:2020-12-06
系統唯一ID生成分案有很多種,例如:資料庫 auto_increment,UUID,Redis生成ID(Redis原子操作INCR和INCRBY),Twiitter的snowflake演算法,ZooKeeper生成ID,MongoDb的ObjectId,下面我們就看一下ZooKeeper實現分散式系統唯一ID。
public int idGen() throws Exception { String zkAddress = "127.0.0.1:2181"; String idNode = "/id"; //重試策略 RetryPolicy retry = new RetryNTimes(3,2000); //建立連線客戶端 CuratorFramework client = CuratorFrameworkFactory.builder(). connectString(zkAddress). sessionTimeoutMs(5000). connectionTimeoutMs(10000). retryPolicy(retry). build(); //啟動客戶端 client.start(); if (null == client.checkExists().forPath(idNode)) { client.create().withMode(CreateMode.PERSISTENT) .forPath(idNode); } Stat stat = client.setData().withVersion(-1).forPath(idNode); return stat.getVersion(); }
注意:換了ZooKeeper,資料就要從0開始,還沒有直接可以修改指定數字那裡開始,只能寫程式一點點的建立,直到達到你要想的資料 ,這是它最大的弊端。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。