Zookeeper實現分布式鎖

2021-08-21 08:30:49 字數 2850 閱讀 2785

curatorframework提供的方法:

方法名描述

create()

開始建立操作, 可以呼叫額外的方法(比如方式mode 或者後台執行background) 並在最後呼叫forpath()指定要操作的znode

delete()

開始刪除操作. 可以呼叫額外的方法(版本或者後台處理version or background)並在最後呼叫forpath()指定要操作的znode

checkexists()

開始檢查znode是否存在的操作. 可以呼叫額外的方法(監控或者後台處理)並在最後呼叫forpath()指定要操作的znode

getdata()

開始獲得znode節點資料的操作. 可以呼叫額外的方法(監控、後台處理或者獲取狀態watch, background or get stat) 並在最後呼叫forpath()指定要操作的znode

setdata()

開始設定znode節點資料的操作. 可以呼叫額外的方法(版本或者後台處理) 並在最後呼叫forpath()指定要操作的znode

getchildren()

開始獲得znode的子節點列表。 以呼叫額外的方法(監控、後台處理或者獲取狀態watch, background or get stat) 並在最後呼叫forpath()指定要操作的znode

intransaction()

開始是原子zookeeper事務. 可以復合create, setdata, check, and/or delete 等操作然後呼叫commit()作為乙個原子操作提交

後台操作的通知和監控可以通過clientlistener介面發布. 你可以在curatorframework例項上通過addlistener()註冊listener, listener實現了下面的方法:

curatorzookeeperclient引數:
zookeepe***ctory- 用於建立zookeeper例項的

工廠ensembleprovider- 合奏提供者sessiontimeoutms- 會話超時connectiontimeoutms- 連線超時watcher- 預設觀察者或nullretrypolicy- 要使用的重試策略canbereadonly- 如果為true,則允許zookeeper客戶端在網路分割槽的情況下進入唯讀模式。

詳情zookeeper(string, int, watcher, long, byte, boolean)請見connectionhandlingpolicy- 連線處理策略 - 使用其中乙個預定義的策略或編寫自己的策略

@configuration

@order(1)

public class zookeeperconfig

/*** zk

客戶端*

@return

*/@bean

public curatorframework curatorframeworkfactory()

@bean

public distributedlock createdistributedlock()

}

@component

public class distributedlock

/*** 初始化鎖

*/public void

init()

//針對zk

的分布式鎖節點,建立相應的

watcher

事件監聽

addwatchertolock("/" + zk_lock_project

);} catch (exception e)

}/**

* 獲取分布式鎖

*/public void

getlock() catch (exception e)

//阻塞執行緒

zklocklatch

.await();

} catch (interruptedexception e1) }}

}/**

* 釋放分布式鎖

*/public boolean

releaselock()

} catch (exception e)

log.info("

分布式鎖釋放完畢

");return true;

} /**

* 建立

watcher監聽*

*@throws

exception

*/public void

addwatchertolock(string path) throws exception }}

});}}

獲取分布式鎖--->distributedlock.getlock()

;

釋放

分布式鎖--->distributedlock

完成!!!!!!!!!!!!!!!!!!!!!!!!

Zookeeper實現分布式鎖

zookeeper實現分布式鎖 實現分布式環境下同步鎖的實現 author hao.wang date 2017 1 20 15 43 public class distributelockdemo implements watcher catch ioexception e catch inter...

Zookeeper實現分布式鎖

一 分布式鎖介紹 分布式鎖主要用於在分布式環境中保護跨程序 跨主機 跨網路的共享資源實現互斥訪問,以達到保證資料的一致性。二 架構介紹 在介紹使用zookeeper實現分布式鎖之前,首先看當前的系統架構圖 解釋 左邊的整個區域表示乙個zookeeper集群,locker是zookeeper的乙個持久...

Zookeeper實現分布式鎖

zookeeper分布式鎖 1 分布式鎖 分布式鎖在一組程序之間提供互斥機制,任何時刻只有乙個程序可以持有鎖,持有鎖的程序就是系統的 領導者 分布式鎖分為兩種 獨佔鎖和共享鎖 獨佔鎖 所有嘗試獲取鎖的客戶端,最終只有乙個可以成功獲得鎖 共享鎖 所有嘗試獲取鎖的客戶度,最終都會被執行,只是有個全域性時...