2009-06-11 8 views
6

पुनरारंभ करना है मेरा एप्लिकेशन एक एरलंग क्लस्टर में चलता है - आमतौर पर दो या अधिक नोड्स के साथ। नोड्स के बीच सक्रिय निगरानी है (erlang: monitor_node का उपयोग करके) जो ठीक काम करता है - मैं इस तथ्य का पता लगा सकता हूं और प्रतिक्रिया दे सकता हूं कि एक नोड जो अब ऊपर था।एक दूरस्थ एरलांग नोड की निगरानी कैसे करें जो नीचे था और

लेकिन फिर मैं कैसे पता लगा सकता हूं कि नोड पुनरारंभ हो गया है और व्यवसाय में वापस आ गया है? मैं समय-समय पर नोड को पिंग कर सकता हूं जब तक कि यह बैक अप न हो, लेकिन क्या कोई बेहतर तरीका है जिसे मैंने याद किया है? प्रक्रिया समूह इसे प्राप्त करने का एक बेहतर तरीका है?

(जोड़ने के लिए संपादित)

मुझे लगता है कि इस सवाल का जवाब एक पर्यवेक्षक के चुनाव की तरह एक तकनीक प्रदर्शन करने के लिए विचार प्रक्रिया मुझे याद आ रहा था। मैं उसमें देखता हूं और इस सवाल को पूरा करता हूं ....

उत्तर

2

लेकिन फिर मुझे पता कैसे लगाया जा सकता है कि नोड फिर से शुरू हो गया है और व्यवसाय में वापस आ गया है? मैं समय-समय पर नोड को पिंग कर सकता हूं जब तक कि यह बैक अप न हो, लेकिन क्या कोई बेहतर तरीका है जिसे मैंने याद किया है? प्रक्रिया समूह इसे प्राप्त करने का एक बेहतर तरीका है?

बस एक विचार है, लेकिन कैसे के बारे में पुनरारंभ नोड हीस्पष्ट पर्यवेक्षक/निगरानी नोड है कि यह पुन: प्रारंभ समाप्त हो गया है सूचित और इसे फिर से उपलब्ध है कि हो रही है?

आप इस उद्देश्य के लिए आवर्ती "दिल की धड़कन संदेश" का उपयोग कर सकते हैं, या विशेष रूप से सफल प्रारंभिकरण के बाद भेजे जाने वाले कस्टम संदेश के साथ आ सकते हैं। की तर्ज पर कुछ:

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

हां - यह वास्तव में नोड करता है जब यह पुनरारंभ होता है - वास्तव में कोई पर्यवेक्षक नोड प्रति सेकेंड नहीं होता है, वे प्रभावी रूप से "दोस्त" होते हैं और नोड सिस्टम के राज्य को निर्धारित करने के लिए अपने मित्रों तक पहुंचता है (और शायद उस राज्य की प्रतिलिपि बनाते हैं) जब यह शुरू होता है। –

+0

और स्पष्ट होने के लिए - प्रत्येक नोड बराबर है तो यदि आप पहले नोड अप हैं तो आप क्या करते हैं - आप किसी भी नोड पर आरपीसी नहीं कर सकते हैं, और आपके पास संदेश भेजने के लिए कोई भी पीआईडी ​​नहीं है (बेशक)। लेकिन यह बस चारों ओर लटका सकता है और किसी भी अन्य नोड्स को शुरू करने और उससे संपर्क करने की प्रतीक्षा कर सकता है ... –

+2

ऐसा लगता है कि आपके नोड्स मूल रूप से केंद्रीय नोड के किसी भी रूप के बिना विकेन्द्रीकृत हैं? मुझे लगता है कि सामान्य रूप से, आप कम से कम एक पर्यवेक्षक या कम से कम कुछ 'मास्टर' नोड के लिए चाहते हैं। कि सभी नोड्स अपनी रिपोर्ट/संदेश भेज सकते हैं, यानी "नोड रजिस्ट्री" का कुछ रूप। हो सकता है कि आपको कुछ और जानकारी प्रदान करने की ज़रूरत है, मैं कल्पना कर सकता हूं कि कोई भी सम्मेलन के बारे में सोच सकता है कि प्रत्येक नोड मास्टर बन गया है यदि कोई मास्टर पहले से ही नहीं है। वह समानता आवश्यकता को पूरा करेगा। – none

1

आप एक global_group तो global_group बना सकते हैं का उपयोग करें: monitor_nodes (सही) एक ही वैश्विक समूह के भीतर अन्य नोड नजर रखने के लिए। नोड्स की निगरानी करने वाली प्रक्रिया को नोडअप और नोडडाउन संदेश मिलेगा।

संबंधित मुद्दे