freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

基于zookeeper的分布式session實現(xiàn)-已發(fā)布(編輯修改稿)

2025-07-15 17:06 本頁面
 

【文章內容簡介】 60。if((id)) {//刪除Session節(jié)點下的數據(id, name)。}}publicsynchronizedvoidsetAttribute(String name, Object value) {//獲取session IDString id = getId()。if((id)) {//將數據添加到ZooKeeper服務器上(id, name, value)。}}publicvoidinvalidate()throwsIllegalStateException {//獲取session IDString id = getId()。if((id)) {//刪除Session節(jié)點(id)。}}這些方法中都是直接和ZooKeeper上對應的Session進行數據交換。本來我是想在本地Session對象上創(chuàng)建一個ZooKeeper的緩沖,當用戶調用Session的讀方法時,先到本地緩沖中讀數據,讀不到再到ZooKeeper上去取,這樣可以減少網絡的通訊開銷。但在分布式環(huán)境下,這種策略所帶來的數據同步開銷更加的可觀。因為每次一個子系統(tǒng)的Session數據更新,都將觸發(fā)所有其他子系統(tǒng)與之關聯(lián)的Session數據同步操作,否則Session中數據的一致性將無法得到保障。看到這里,大家可能已經發(fā)覺了,所有與ZooKeeper交互的代碼都被封裝到ZooKeeperHelper類中,接下來就來看看這個類的實現(xiàn)。4)ZooKeeperHelper類實現(xiàn)publicclassZooKeeperHelper {/**日志*/privatestaticLoggerlog=()。privatestaticStringhosts。privatestaticExecutorServicepool= ()。privatestaticfinalStringGROUP_NAME=/SESSIONS。/***初始化*/publicstaticvoidinitialize(Configuration config) {hosts= ()。}/***銷毀*/publicstaticvoiddestroy() {if(pool!=null) {//關閉()。}}/***連接服務器**@return*/publicstaticZooKeeper connect() {ConnectionWatcher cw =newConnectionWatcher()。ZooKeeper zk = (hosts)。returnzk。}/***關閉一個會話*/publicstaticvoidclose(ZooKeeper zk) {if(zk !=null) {try{()。}catch(InterruptedException e) {(e)。}}}/***驗證指定ID的節(jié)點是否有效*@paramid*@return*/publicstaticbooleanisValid(String id) {ZooKeeper zk =connect()。if(zk !=null) {try{returnisValid(id, zk)。}finally{close(zk)。}}returnfalse。}/***驗證指定ID的節(jié)點是否有效*@paramid*@paramzk*@return*/publicstaticbooleanisValid(String id, ZooKeeper zk) {if(zk !=null) {//獲取元數據SessionMetaData metadata =getSessionMetaData(id, zk)。//如果不存在或是無效,則直接返回nullif(metadata ==null) {returnfalse。}return()。}returnfalse。}/***返回指定ID的Session元數據*@paramid*@return*/publicstaticSessionMetaData getSessionMetaData(String id, ZooKeeper zk) {if(zk !=null) {String path =GROUP_NAME+/+ id。try{//檢查節(jié)點是否存在Stat stat = (path,false)。//stat為null表示無此節(jié)點if(stat ==null) {returnnull。}//獲取節(jié)點上的數據byte[] data = (path,false,null)。if(data !=null) {//反序列化Object obj = (data)。//轉換類型if(objinstanceofSessionMetaData) {SessionMetaData metadata = (SessionMetaData) obj。//設置當前版本號(())。returnmetadata。}}}catch(KeeperException e) {(e)。}catch(InterruptedException e) {(e)。}}returnnull。}/***更新Session節(jié)點的元數據*@paramid Session ID*@paramversion更新版本號*@paramzk*/publicstaticvoidupdateSessionMetaData(String id) {ZooKeeper zk =connect()。try{//獲取元數據SessionMetaData metadata =getSessionMetaData(id, zk)。if(metadata !=null) {updateSessionMetaData(metadata, zk)。}}finally{close(zk)。}}/***更新Session節(jié)點的元數據*@paramid Session ID*@paramversion更新版本號*@paramzk*/publicstaticvoidupdateSessionMetaData(SessionMetaData metadata, ZooKeeper zk) {try{if(metadata !=null) {String id = ()。Long now = ()。//當前時間//檢查是否過期Long timeout = () + ()。//空閑時間//如果空閑時間小于當前時間,則表示Session超時if(timeout now) {(false)。(Session節(jié)點已超時[+ id +])。}//設置最后一次訪問時間(now)。//更新節(jié)點數據String path =GROUP_NAME+/+ id。byte[] data = (metadata)。(path, data, ())。(更新Session節(jié)點的元數據完成[+ path +])。}}catch(KeeperException e) {(e)。}catch(InterruptedException e) {(e)。}}/**1
點擊復制文檔內容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1