Zookeeper開發小結

2021-07-30 08:02:11 字數 2147 閱讀 6113

一.例項化zookeeper與自動重連**樣例

public class zkclient 

sessiontimeout = integer.parseint(config.getproperty("zk.sessiontimeout","-1"));

connectzk();

}/**

* core method,啟動zk服務 本例項基於自動重連策略,如果zk連線沒有建立成功或者在執行時斷開,將會自動重連.

*/private void connectzk() catch (exception e)

waiter.notifyall();}}

class sessionwatcher implements watcher

// 如果是鏈結狀態遷移

// 參見keeperstate

synchronized (waiter) }}

}private void close()

waiter.notifyall();

}} catch (exception e)

}}

二.授權與驗證

string auth = "admin:admin";

//anywhere,but before znode operation

//can addauth more than once

zookeeper.addauthinfo("digest", auth.getbytes("utf-8"));

id id = new id("digest", digestauthenticationprovider.generatedigest(auth));

acl acl = new acl(zoodefs.perms.all, id);

listacls = collections.singletonlist(acl);

//如果不需要訪問控制,可以使用acls = zoodefs.ids.open_acl_unsafe

zookeeper.create("/singleworker", null, acls, createmode.persistent);

三.建立znode節點

trycatch(keeperexception.nodeexist***ception e) catch (exception e)
四.刪除節點

//zookeeper不允許直接刪除含有子節點的節點;

//如果你需要刪除當前節點以及其所有子節點,需要遞迴來做

private void deletepath(string path,zookeeper zookeeper) throws exception

trycatch(keeperexception.nonodeexception e)

}

//刪除節點,刪除時比較version,避免刪除時被其他client修改

public boolean delete(string path)

}catch(keeperexception.nonodeexception e)catch (exception e)

return true;

}

五.修改資料

public boolean update(string path,byte data)

}catch (keeperexception.nonodeexception e)catch (exception e)

return false;

}

五.事務

public boolean create(string name) catch (exception e)

return false;

}

備註:zookeeper中的watcher機制非常好,但是重要的資料變更,不能完全依賴watcher通知,因為對於zkclient而言,網路異常都將會導致watcher有丟失的潛在風險,而且watcher是"即發即失",當你接收到watcher通知之後,在處理過程中,資料仍然有變更的可能,因此在時間線上,不可能做到完全準確.       

Zookeeper集群安裝小結

set zookeeper enviroment export zookeeper home home takemu zookeeper 3.3.4 export path path zookeeper home bin zookeeper home conf 4.修改conf zoo.cfg。在 ...

Android HDCP開發小結

hdcp high bandwidth digital content protection 用以保護數字內容。hdcp在2.0以前的版本都主要是配合hdmi等需要有線連線的裝置的,隨著網路的發展,數字內容的保護需求明顯增加,為了新的應用的需要,hdcp2.0出現了,它只是需要tcp ip連線即可,...

開發步驟小結

1.建立svn專案,以前是先建專案再匯入,發現這樣並不好 2.建立工作區專案,此處可以借助 生成工具 3.建立domain model,先不要寫完整的model 需要的是class name資訊 4.建立inte ce,如service inte ce,dao inte ce,此處也可借助 生成工具...