2014-03-26 68 views
1

mongodb是否具有與Redis的關鍵超時類似的功能?我需要這個「健康檢查」不同的機器同時給Mongo提供數據。mongodb是否有類似Redis的文檔超時選項?

每臺機器都負責收集一組不同的數據,但是如果其中一個出現故障,那麼我需要另一個人來了解這一點,並接管死機的任務(以及保留自己的捕獲任務運行)。問題是,我怎麼知道一臺機器是否已經停機?

我的想法是讓每個「飼料機」不斷(比如每秒)更新健康文檔集合,其與,比如說一個文件,一個5秒超時狀態。如果該文件消失,那麼該機器已經停機。

這可以用Mongo來完成嗎?或者是否有另一種設計模式,不需要不斷地爲每臺機器的Mongo數據流提供輪詢,這將實現同樣的目標?

回答

3

MongoDB has TTL (Time To Live) collections.

爲了您確定機器的健康,我會說耦合與MongoDB的或任何數據存儲不會是一個好主意的問題。

你可以有一個主/協調器,其接收從不同的機器坪/心跳,然後相應地分配任務。

+0

非常感謝你。通過ping,你的意思是一種不經過Mongodb的通信模式,我假設你在說什麼?它是一組異構機器(數據捕獲是Windows,服務器和數據消費者是Ubuntu的)。使用Python,你可以建議什麼庫來執行ping操作? –

+0

@ThomasBrowne你是對的。我在談論一個溝通機制。像Zookeeper這樣的應該在這裏幫助。不確定是否有python等價物。 –

相關問題