2011-06-10 6 views
10

मैं क्लस्टर पर अक्का के साथ बने रिमोट एक्टर्स सॉफ़्टवेयर को तैनात करना चाहता हूं। प्रणाली कई कार्यकर्ता नोड्स और एक मास्टर नोड से बना है। समस्या यह है कि मैं पहले क्लस्टर नोड्स के आईपी पते को नहीं जानता (लेकिन मुझे पता है कि वे एक ही सबनेटवर्क का हिस्सा हैं)। इसलिए, मुझे प्रत्येक नोड पर सही अभिनेता रेफरी बनाने के लिए स्टार्टअप के बाद सभी के आईपी पते की खोज करने का एक अच्छा तरीका चाहिए।अक्का रिमोट अभिनेता सर्वर डिस्कवरी

मैं किसी भी मुफ्त सॉफ्टवेयर लाइसेंस के तहत वितरित एक ligtweight समाधान (मुझे केवल प्रारंभिक सेटअप के लिए इसकी आवश्यकता है) की तलाश में है।

उत्तर

7

कुछ समय पहले मैंने prototype बनाया था जो आपकी समस्या का समाधान करने के लिए है (कोड और/या योगदान का पुन: उपयोग करने के लिए स्वतंत्र महसूस करें)।

यह कैसे काम करता है पर कुछ शब्द। यह प्रत्येक अभिनेता रजिस्ट्री (= नोड) के लिए एक दूरस्थ अभिनेता शुरू करता है। रजिस्ट्रीएक्टर एक वितरित सेटअप में चल रहे सभी अन्य रजिस्ट्रियों के लिंक रखता है। जब सिस्टम में कोई नया नोड जोड़ा जाता है, तो उसे कम से कम एक अन्य नोड (अभिनेता रजिस्ट्री) के बारे में पता होना चाहिए और उसे सूचित करना होगा। अन्य सभी नोड्स को नए के बारे में पता करने की तुलना में अभिनेता रजिस्ट्री (इस प्रकार, किसी भी रजिस्ट्रीएक्टर के पास अन्य सभी रजिस्ट्रीएक्टर के लिंक हैं), और इसके अंत में कलाकारों के लिंक का आदान-प्रदान शुरू करने की प्रक्रिया शुरू होती है - इसके बाद सभी अभिनेता रजिस्ट्रियों के पास सभी कलाकारों के लिंक होते हैं (या तो स्थानीय या दूरस्थ) एक सिस्टम में चल रहा है।

अधिक जानकारी के लिए, कृपया यह blogpost देखें।

1

जब तक सभी नोड्स कुछ सामान्य ज्ञान साझा नहीं करते हैं, मुझे लगता है कि आपके समाधान को आईपी प्रसारण पर भरोसा करना होगा। ब्रॉडकास्टिंग को सबनेट पर सभी नेटवर्क नोड्स में एक पैकेट भेजने के रूप में परिभाषित किया जाता है, इसलिए यदि आपका मास्टर नोड ऐसा करता है, जबकि सभी कार्यकर्ता नोड्स इसके लिए सुनते हैं, तो आप आईपी पते को प्राथमिकता के बिना उन सभी को कनेक्ट करने में सक्षम होना चाहिए।

मैंने इसे स्कैला में कोड नहीं किया है, लेकिन यहां जावा में संदेश प्रसारित करने का एक काफी पठनीय उदाहरण है: http://download.oracle.com/javase/tutorial/networking/datagrams/broadcasting.html। इसे समान कक्षाओं का उपयोग करके स्कैला को अनुकूलित करने के लिए सीधा होना चाहिए।

4

jgroups पर एक नज़र डालें।

http://jgroups.org/

यह आपके मानदंडों को पूरा करता है - यह हल्के, खुला स्रोत और बहुत परिपक्व, स्थिर उत्पाद है।

आप इसे आसानी से स्वचालित समूह प्रबंधन और खोज के लिए अपनी आवश्यकताओं के आधार पर कॉन्फ़िगर कर सकते हैं - यह लगभग किसी भी नेटवर्क कॉन्फ़िगरेशन का समर्थन करता है - आप समूह सदस्य खोज के लिए मल्टीकास्ट, साझा फ़ाइल या यूनिकास्ट का उपयोग कर सकते हैं।

+0

अच्छा जवाब भी। मैंने अतीत में jgroups की कोशिश की है और मैं संतुष्ट हो गया है। – paradigmatic