2010-02-23 30 views
1

我有一組資源,每個資源都有一個唯一的標識符,並且每個資源元素在使用之前都必須鎖定,然後解鎖。應用程序的邏輯是:動物園管理員 - 鎖定其中一個很多

lock any one element; 
if (none locked) then 
    exit with error; 
else 
    get resource-id from lock 
    use resource 
    unlock resource 
end 

動物園管理員看起來像一個不錯的人選來管理這些鎖,速度快,有彈性,它似乎很簡單,從客戶端故障中恢復。

任何人都可以考慮如何使用Zookeeper來實現這一目標嗎?

回答

2

怎麼樣你在一個目錄資源(比如說/鎖)這 -

每個需要鎖定,列出該目錄 的所有孩子,然後過程創建一個名爲一個短暫的節點/ locks/resource1/lock取決於 要鎖定的資源。它可以在一組資源上隨機化。

只要使用 資源完成,該臨時節點將被該進程刪除。一個進程只能用於resource_ {i},如果它能夠創建/ locks/resource_ {i}/locks。

會這樣嗎?

感謝 馬哈德夫

+0

感謝馬哈德夫,我認爲這很可能做的伎倆。 – Martin 2010-02-23 21:05:25