2012-10-04 68 views
1

我正在編寫一個長時間運行的java進程,它將在內存隊列中輪詢並且將從隊列中消耗項目。我想使用zookeeper在這個服務中有動態配置。我已經編寫了一個運行線程並觀看zookeeper節點的java類。在對動物園管理員節點的每一項變化中,都會觸發一個事件,並獲取動物園管理員節點數據的新內容。現在的問題是:用於長時間運行的java進程的配置系統

  1. 應該是什麼的Z序節點數據的編碼,一種選擇是上使用的.properties文件系統一樣所以才鍵值對,然後在我的監聽器設置這些鍵的配置類更改。

  2. 將這些數據寫入文件然後將該配置文件包含在我的java程序中有意義嗎?如果我這樣做,當配置更改時,我將不得不以某種方式刷新磁盤上的內容。在將這些配置寫入本地文件時,我沒有看到特別的好處。 Zookeeper服務器有足夠的冗餘,當服務被反彈時,配置刷新線程可以獲得該znode的所有數據。

+0

爲了記錄,許多長時間運行的系統都是以這樣的方式編寫的,即他們收聽SIGHUP信號並在接收到SIGHUP信號時對其進行重新哈希。 – Wug

回答

1

1)屬性文件將正常工作。 java.util.Properties提供了方便的方法來加載和保存流。您可能也想將配置文件存儲在yaml文件中,它允許使用一些簡單的鍵/值對。

2)沒有理由將配置信息存儲在兩個地方,如果你這樣做,將會令人困惑的是,哪個配置文件是真正的。

相關問題