Zookeeper全局唯一ID生成方案解析
系统唯一ID生成分案有很多种,例如:数据库auto_increment,UUID,Redis生成ID(Redis原子操作INCR和INCRBY),Twiitter的snowflake算法,ZooKeeper生成ID,MongoDb的ObjectId,下面我们就看一下ZooKeeper实现分布式系统唯一ID。
publicintidGen()throwsException{ StringzkAddress="127.0.0.1:2181"; StringidNode="/id"; //重试策略 RetryPolicyretry=newRetryNTimes(3,2000); //创建连接客户端 CuratorFrameworkclient=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); } Statstat=client.setData().withVersion(-1).forPath(idNode); returnstat.getVersion(); }
注意:换了ZooKeeper,数据就要从0开始,还没有直接可以修改指定数字那里开始,只能写程序一点点的创建,直到达到你要想的数据,这是它最大的弊端。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。