2009-06-11 87 views
6

我的應用程序運行在erlang羣集中 - 通常具有兩個或更多節點。在節點之間存在主動監控(使用erlang:monitor_node),它可以正常工作 - 我可以檢測到並且對已啓動的節點現在已關閉的事實做出反應。如何監控遠程erlang節點已關閉並正在重新啓動

但是,我該如何發現節點已重新啓動並重新開始工作?我當然可以週期性地對節點進行ping操作,直到它恢復正常,但是有沒有更好的方法讓我錯過了?過程組是實現這一目標的更好方法嗎?

(編輯補充)

我想答案像監事選舉進行技術的思維過程我失蹤了。我會研究這一點,並將此問題標記爲已完成......

回答

2

但是,我該如何發現節點已重新啓動並重新開始工作?我當然可以週期性地對節點進行ping操作,直到它恢復正常,但是有沒有更好的方法讓我錯過了?過程組是實現這一目標的更好方法嗎?

只是一個想法,而是具有重新啓動節點本身明確通知,該公司已經完成重新啓動監視/監控節點,它可又如何呢?

您可以爲此目的使用反覆出現的「心跳消息」,或者創建一個自定義消息,專門用於在成功初始化後發送一次。沿着線的東西:

start(SupervisorPID) -> 
    SuperVisorPID ! {hello, MyPID}; 
    mainloop(). 
+0

是 - 這實際上是節點在重新啓動時執行的操作 - 實際上沒有任何管理節點,它們實際上是「夥伴」,節點向其好友伸出手以確定系統的狀態(以及也許會複製該狀態)。 – 2009-06-12 01:09:11

1

您可以創建一個global_group然後使用global_group:monitor_nodes(真),以監視同一全局組中的其他節點。監視節點的過程將獲得nodeup和nodedown消息。

相關問題