2011-10-24 86 views
6

我寫一個分佈式應用程序涉及需要拒絕操作給用戶,除非他們是列表的一部分幾個前端節點。是否有意義使用動物園管理員來存儲用戶權限

現在,我們有更多的那麼這些聯接的4個,但只有運行DB2這往往是停機維護一臺數據庫服務器。

現在我們輪詢內存列表更新的,這樣如果用戶從列表中刪除的變化得到反映到所有4個節點的數據庫。但是如果一個節點在數據庫關閉時重新啓動,我們最終會得到一個空列表,這將拒絕所有我們不想要的用戶請求。我們可以接受來自用戶的請求,即使數據庫在我們將它們緩存在消息隊列中時發生故障,但是如果它們需要被拒絕,我們希望立即拒絕它們!

是否有意義上運行我們的每一個節點4的動物園管理員實例,並存儲在動物園管理員的權限。因此閱讀應該很快,並且數據高度可用並且合理。我們不必再進行輪詢,即使我們重新啓動數據庫,節點也可以從zookeeper獲得他們的配置!

回答

10

是的,你描述你的問題的方式,Zookeeper應該完美地符合這個法案。有幾個問題,儘管這需要回答:

  • 多少數據,我們在談論什麼? Zookeeper將數據保存到磁盤,但只適用於數據適合RAM的情況。

  • 多久的數據改變了嗎? Zookeeper將確保超過一半的節點接收到更新,因此寫入不完全是高性能的。

  • 多少數據應立即看?動物園管理員限制1MB響應大小,但他們的建議是保持數據遠低於此限制。請注意,如果列出具有大量子節點的節點,也可以達到此限制,因爲兒童名稱會計爲數據。

考慮到數據是從RAM送達,閱讀它不應該是太大的問題,但你總是可以緩存結果,並就適當的節點設置觀察到無效的本地數據。