zookeeper(四)實現分布式鎖

2021-10-03 00:13:03 字數 1605 閱讀 9488

根據zookeeper結點的特點,可以通過建立臨時有序節點來建立排他鎖。

先進先出佇列

通過getchildren獲取指定根節點下的所有子節點,子節點就是任務

確定自己節點在子節點中的順序

如果自己不是最小的子節點,那麼監控比自己小的上乙個子節點,否則處於等待

接收watcher通知,重複流程

引入pom

org.apache.zookeeper<

/groupid>

zookeeper<

/artifactid>

3.4.8

<

/version>

<

/dependency>

public

class

mydistributelock

;//節點的資料

private countdownlatch countdownlatch=

newcountdownlatch(1

);private

int sessiontimeout=

5000

;private string lockid;

//記錄鎖節點id

public

mydistributelock()

private zookeeper getinstance()

}});

}catch

(ioexception e)

return zookeeper;

}public

void

lock()

throws keeperexception, interruptedexception

string first=sortedset.

first()

;if(lockid.

equals

(first)

) sortedset

lessthanlockid=sortedset.

headset

(lockid);if

(!lessthanlockid.

isempty()

)}public

void

unlock()

catch

(interruptedexception e)

catch

(keeperexception e)

}public

static

void

main

(string[

] args)

catch

(exception e)

finally}}

}).start()

;}}}

public

class

mywatcher

implements

watcher

@override

public

void

process

(watchedevent event)

}}

Zookeeper實現分布式鎖

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

Zookeeper實現分布式鎖

curatorframework提供的方法 方法名描述 create 開始建立操作,可以呼叫額外的方法 比如方式mode 或者後台執行background 並在最後呼叫forpath 指定要操作的znode delete 開始刪除操作.可以呼叫額外的方法 版本或者後台處理version or bac...

Zookeeper實現分布式鎖

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