2010-12-23 116 views
2

我要存儲大量的關於簇,工藝,IP地址等。我對這樣的產品早工作,在那裏LDAP被用於此目的的配置數據。雖然PITA是第一次配置它,但我喜歡交易LDAP部分,這有助於在發生變化時動態重新加載配置。它可以通過使用inotify的平面文件完成,但這不如交易LDAP。但是,正如我所說的,配置是一個真正的痛苦,我也不想在本產品中借用LDAP的相同想法。配置存儲

所以任何人都可以給我一個關於哪個將成爲下一個最佳替代品的想法,這使得輸入配置變得簡單,並且可以幫助進行動態配置,並在配置文件發生變化並且確切發生了什麼變化時通知我的進程(直接或間接)?

我打算髮展自己的產品在C++和C

的配置可以由管理員進行編輯,或者,如果他是懶得他可以使用一些腳本自動化。也是通過cli,而不是一個正在運行的進程,這會使我在併發和鎖定問題上陷入困境。

我的程序是一個守護進程,某種形式的集羣管理器的多個節點上運行。

沒有提供給用戶編輯配置包裝。

我只在尋找Linux/Solaris平臺。

回答

1

你真的沒有給予足夠的背景信息,一個很好的答案給出。所以,這裏有一些沒有提出問題,其答案將影響您的選擇:

  • 配置文件是如何編輯的?通過你的過程,或通過手工編輯,或通過其他程序?
  • 主程序如何運行 - 與用戶交互的前臺,還是作爲後臺進程在後臺運行?
  • 如果你希望人們手工編輯配置,那麼你可以這樣做,它發送的信號(通常SIGHUP)的守護程序告訴它重新讀取配置文件提供一個包裝腳本。
  • 如果您的主程序要引導用戶進行編輯,那麼當編輯完成時,您確實無需告訴程序。它已經知道。
  • 你在標籤中提到Linux;我們可以假設Windows可移植性不是問題嗎?

至於配置文件格式,您可以使用XML的時尚(和膨脹)。但是,儘管這是一個用於程序通信的好工具,但對於人們來說編輯並不是很好。你應該看看E S Raymond的"The Art of UNIX Programming"這是一個很好的通用閱讀,並且有一章介紹不同的配置文件格式。你應該採用這裏列出的方案之一。哪種方案最好取決於你必須在配置文件中捕獲哪些信息。

如果你要嵌入一個解釋器(Perl中,Lua中的Tcl/Tk,...)到你的程序,你可能會使用該語言來處理配置文件...或者你可能沒有。

+0

我編輯了我的問題,使其更清晰。 – punith 2010-12-24 04:10:45