我有一個應用程序處理目錄中的文件並將它們與處理後的輸出一起移動到另一個目錄。沒什麼特別的。引入了一個有趣的需求:經典文件系統問題 - 目錄上的並行遠程處理
通過允許多個遠程實例在同一文件存儲上工作來實現容錯和處理吞吐量。
其他注意事項是我們不能假設文件系統,因爲我們同時支持Windows和NFS。
當然,問題是,我如何確保不同的實例不嘗試和處理相同的工作,可能會破壞工作或降低吞吐量?文件鎖定可能會產生問題,特別是跨網絡共享。我們可以使用更復雜的方法,如簡單的數據庫或消息傳遞框架(la JMS或類似的方法),但是整個集羣需要具有容錯能力。由於它引入了單點故障,我們不能擁有一個數據庫或消息傳遞提供程序。
我們已經實現了一個解決方案,該解決方案使用多播消息來自我發現處理實例並選擇分配工作的主管。如果主管倒閉並進行另一次選舉,則有超時。然而,我們的網絡庫並不是非常成熟,而且我們的消息實現很笨拙。
但是,我的直覺告訴我,有一種更簡單的方法。
的思考?
有趣的想法,但我最初想知道如果你關於假定重命名的聲明是原子的是真的。爲什麼假設這是安全的?我們試圖覆蓋的情況是通過NFS運行的;它的緩存在過去引起了我們的問題。 如果我們同時重命名a-> b和a-> c操作,那麼什麼機制可以保護我們免受這兩個b&c的影響? – 2009-07-13 18:49:14