मैं हाल ही में अक्का और अभिनेता-आधारित प्रणालियों की अवधारणाओं के आसपास अपना सिर लपेटने की कोशिश कर रहा हूं। जबकि अब तक मुझे अक्का मूलभूत सिद्धांतों की बहुत अच्छी समझ है, जब भी क्लस्टरिंग और रिमोट एक्टर्स की बात आती है तो मैं कुछ चीजों से जूझ रहा हूं।क्लस्टर में अक्का अभिनेताओं की खोज
मैं WebSocket chat example that comes with Play Framework 2.0 का उपयोग करके इस मुद्दे को चित्रित करने का प्रयास करूंगा: एक ऐसा अभिनेता है जो वेबसाकेट रखता है और जो वर्तमान में जुड़े उपयोगकर्ताओं की एक सूची रखता है। कलाकार मूल रूप से चैट रूम को तकनीकी रूप से और तर्कसंगत दोनों का प्रतिनिधित्व करते हैं। जब तक एक सर्वर पर एक सिंगल चैट रूम चल रहा है, यह पूरी तरह से ठीक काम करता है।
अब मैं यह समझने की कोशिश कर रहा हूं कि जब हम कई गतिशील चैट रूम (नए कमरे किसी भी समय खोले/बंद हो सकते हैं) सर्वर के समूह पर चल रहे हैं (एकल नोड्स के साथ) इस उदाहरण को कैसे बढ़ाया जाना चाहिए वर्तमान मांग के अनुसार जोड़ा या हटाया जा रहा है)। ऐसे मामले में उपयोगकर्ता ए सर्वर 1 से कनेक्ट हो सकता है जबकि उपयोगकर्ता बी सर्वर से कनेक्ट होता है 2. दोनों एक ही चैट रूम पर बात कर रहे हैं। प्रत्येक सर्वर पर अभी भी एक अभिनेता (प्रत्येक चैट रूम के लिए?) होगा जो वेबसॉकेट उदाहरणों को सही उपयोगकर्ताओं को ईवेंट (संदेश) प्राप्त करने और प्रकाशित करने के लिए रखता है। लेकिन तार्किक रूप से केवल सर्वर 1 या सर्वर 2 पर एक चैट रूम अभिनेता होना चाहिए जिसमें वर्तमान में जुड़े हुए उपयोगकर्ताओं (या समान कार्य) की सूची है।
आप इसे "शुद्ध अक्का" में और ज़ीरोएमक्यू या खरगोशएमक्यू जैसी अतिरिक्त संदेश प्रणाली को जोड़ने के बिना कैसे प्राप्त करेंगे?
यह वही है मैं अब तक के साथ आ गया है, मुझे पता है यह किसी भी समझ में आता है कि क्या बताएं:
- उपयोगकर्ता एक सर्वर 1 को जोड़ता है और एक अभिनेता आवंटित किया जाता है कि उसकी WebSocket रखती है।
- अभिनेता चेक करता है (राउटर का उपयोग कर? इवेंटबस? कुछ और?) चाहे सक्रिय चैट रूम के लिए "चैट रूम एक्टर" किसी भी कनेक्टेड क्लस्टर नोड्स पर मौजूद है। चूंकि यह किसी नए चैट रूम अभिनेता के निर्माण का अनुरोध नहीं करेगा और इस अभिनेता से भविष्य में चैट संदेश भेजेगा और प्राप्त करेगा।
- उपयोगकर्ता बी सर्वर 2 पर कनेक्ट होता है और एक अभिनेता को भी अपनी वेबसाकेट के लिए आवंटित किया जाता है।
- यह भी जांचता है कि अनुरोधित चैट रूम के लिए कोई अभिनेता कहीं मौजूद है और इसे सर्वर पर पाता है।
- सर्वर 1 पर चैट रूम अभिनेता अब दिए गए चैट रूम के लिए केंद्र के रूप में कार्य करता है, सभी को "संदेश भेजता है "चैट सदस्य अभिनेता चैट करें और आने वाले लोगों को वितरित करें।
यदि सर्वर 2 नीचे चला जाता है, तो चैट रूम अभिनेता को किसी भी तरह से सर्वर पर फिर से बनाया/स्थानांतरित करना होगा, हालांकि यह अभी मेरी प्राथमिक चिंता नहीं है। मैं इस बारे में सोच रहा हूं कि कैसे अभिनेताओं की गतिशील खोज विभिन्न, मूल रूप से स्वतंत्र मशीनों के बारे में फैली, अक्का के टूलसेट का उपयोग करके किया जा सकता है।
मैं अब कुछ समय से अक्का के दस्तावेज़ीकरण को देख रहा हूं, इसलिए शायद मैं यहां स्पष्ट रूप से याद कर रहा हूं। यदि हां, तो कृपया मुझे प्रबुद्ध करें :-)
मैं मुक्त के जवाब के साथ सहमत होना होगा और:
उपरोक्त विवरण निम्नलिखित कागज पढ़ने और अक्का अवधारणाओं में यह अनुवाद पर आधारित है भंडारण की ओर। बेशक एक वितरित कैश एक सुधार है लेकिन जैसा कि फ्री ने कहा सही नहीं है। वास्तव में मैं एक लागू 'स्टोरेज'-अभिनेता के माध्यम से रेडिस तक पहुंच रहा हूं जो वर्तमान में डेटा अनुरोधों (जैसे मौजूदा सदस्यों की सूची प्राप्त करना) को संभालता है। अगर मुझे यह सही लगता है, तो मेरे कार्यान्वयन के लिए भविष्य में अक्का क्लस्टर कार्यान्वयन के साथ बाधा से बचने के लिए यह जगह होगी। – th3hamm0r
आपको अक्का क्लस्टरिंग एक्सटेंशन की प्रतीक्षा करने की आवश्यकता नहीं है, मेरे उत्तर में जुड़े ब्लॉग पोस्ट देखें। अक्का पूरी तरह से क्लस्टरिंग का समर्थन करने से दूर है। – SoftMemes
चैट रूम सदस्यता सूची दोनों कलाकारों को दो सीवरों पर दो सीवरों पर गलती सहनशीलता के लिए दोनों को भेजे गए अपडेट के साथ आयोजित किया जा सकता है। इस पेपर को देखें जो चैट रूम के लिए प्राथमिक/द्वितीयक मेजबान आवंटित करने के लिए चैट रूम आईडी के पैक्सोस और हैश मोड के साथ ऐसा करने का तरीका बताता है। फिर प्रत्येक क्लाइंट वेबसाकेट दो सर्वरों को स्वयं क्वेरी करने के लिए प्राथमिकता के बारे में जानने के लिए गणना करता है, यदि वह होस्ट डाउन हो जाता है तो वह द्वितीयक पर वापस आ जाता है https://www.dropbox.com/s/iihpq9bjcfver07/VLDB-Paper.pdf (खरीदने के लिए स्पष्ट रूप से बेहतर उस सत्र कैश सेवर को अब खुद को लिखने के बजाय एयरोस्पेक कहा जाता है लेकिन उनका एल्गोरिदम और डिज़ाइन बहुत जानकारीपूर्ण है)। – simbo1905