有關項目中問題解決-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

相關文章
相關標籤/搜索