有关项目中问题解决-zookeeper目录节点问题引发

项目中今天解决一个问题,记录下!apache

有关问题是  开发人员链接 本地 或者 40、4一、42 zookeeper时,全部后台模块有关新增表时建立16位 序列号 对应表中主键就会出问题,而准生产130、14五、146环境下,不会出现问题。windows

例如项目中不少地方 生成表16位 序列号 对应表中主键这么生成服务器

Long contactId = Long.parseLong(ZkGenerateSeq.getIdSeq(SeqID.CONTACT_ID));
/**
	 * 功能描述:3位ID标识+6位日期yymmdd+7位系列号 (16)
	 * 
	 * @author fuhp
	 * @date 2016年5月19日 下午8:12:31
	 * @return String
	 */
	public static String getIdSeq(SeqID seqID) {
		//注意zookeeper下   建立节点目录  /ZKSeq 是否存在
		String path = "/ZkSeq/" + seqID.getIdName();
		if (!client.exists(path)) {
			client.create(path, new byte[0], CreateMode.PERSISTENT);
		}
		Stat stat = client.writeDataReturnStat(path, new byte[0], -1);

		int versionSeq = stat.getVersion();
		String strSeq = (new Integer(versionSeq)).toString();
		while ( 7 > strSeq.length()) {
			strSeq = "0" + strSeq;
		}
		
		return seqID.getIdSeq() + getFormatDate() + strSeq;
	}

debug跟踪程序,发现程序到 client.create(path, new byte[0], CreateMode.PERSISTENT);学习

建立根目录 建立节点目录时 就报错,因而把 相应链接 zookeeper 和生成序列号程序  单独提出来测试测试

public class CreateSession {
	
	public static void main(String[] args) {
		//zk集群的地址  
        String ZKServers = "10.15.34.42:2181,10.15.34.40:2181,10.15.34.41:2181";  
        ZkClient zkClient = new ZkClient(ZKServers,300000, 100000,new SerializableSerializer());  
        String path = "/ZkSeq/CONTACT_ID";
        System.out.println("conneted ok!");  
        if (!zkClient.exists(path)) {
        	 zkClient.create(path, new byte[0], CreateMode.PERSISTENT);
        	 //输出建立节点的路径  
             System.out.println("created path:"+path); 
        }
         
        Stat stat = zkClient.writeDataReturnStat(path, new byte[0], -1);

		int versionSeq = stat.getVersion();
		String strSeq = (new Integer(versionSeq)).toString();
		while ( 7 > strSeq.length()) {
			strSeq = "0" + strSeq;
		}
		
		System.out.println(strSeq);

	}

}

 发现 我把路径中 /ZkSeq中 就不会报错 ,加上/ZkSeq 就有问题 ,报错信息Caused by: org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = NoNode for /ZkSeqspa

因而链接服务器查看了下.net

到zookeeper安装bin目录下 输入debug

[root@master bin]# ./zkCli.sh -server 10.15.34.42:2181,10.15.34.40:2181,10.15.34.41:2181

ls / 查看 code

发现 没有 ZkSeqorm

输入 

create /ZkSeq hello  建立下 问题 就解决了 。

 

 

相应博客 可帮助 学习 以及解决问题

zookeeper windows 下配置和基础命令

Zookeeper学习(五):ZKClient的使用

zookeeper

相关文章
相关标签/搜索