2016-07-07 45 views
0

我有動物園管理員2個問題:問題上的動物園管理員:屏障實施和序列節點

巴里實施

https://zookeeper.apache.org/doc/r3.1.2/recipes.html#sc_recipes_eventHandles

爲什麼第4步是必要的嗎?如果客戶端等待屏障節點的刪除事件,當事件被觸發時,爲什麼客戶端仍然需要重新發布exists()調用?

序列節點

是否飼養員保證追加到序列節點的名字的號是連續,並從0開始?即使混合了Ephemeral屬性?

例如,如果/測試是一個新創建的節點,序列的子節點必須是這樣的:/測試/ xxx_00000000000/測試/ xxx_00000000001/測試/ xxx_00000000002 ...從/test/xxx_00000000000/test/xxx_00000000001絕不會錯過。

回答

0

第一個問題:

可以有客戶看,一個將進入任意數量,併爲他人,存在()將再次返回true,因此需要重新測試。

第二個問題:

我想是的,他們將是連續的,並從0所有scenariis開始。我沒有很好的資源,但我在各種情況下(包括短暫順序)使用順序節點,並且從未看到過其他行爲。

+0

如果所有客戶端都等待屏障節點的刪除事件,並且該節點已被刪除,則應通知所有客戶端,並且任何對exists()的調用都應該返回false。由於該節點已被刪除,因此任何客戶端如何爲exists()調用獲取true? –

+0

我假設第一個獲得通知的客戶端將進入併爲其他人看到屏障。 – C4stor

+0

我仍然不明白爲什麼第一個客戶應該看到屏障?根據我的理解,如果障礙消失,即節點已被刪除,則所有客戶端都應繼續處理。所以沒有必要重新考慮這個障礙。如果我錯了,請糾正我。 –