मैं अपने बीसी थीसिस प्रोजेक्ट पर काम कर रहा हूं जो स्कैला और अक्का में लिखा गया एक Minecraft सर्वर होना चाहिए। सर्वर को क्लाउड में या क्लस्टर पर आसानी से तैनाती योग्य होना चाहिए (सुनिश्चित नहीं है कि मैं उचित शब्दावली का उपयोग करता हूं ... इसे एकाधिक नोड्स पर चलाना चाहिए)। हालांकि, मैं अक्का में नौसिखिया हूं और मैं सोच रहा हूं कि ऐसी चीज को कैसे कार्यान्वित किया जाए। जिस समस्या को मैं अभी समझने की कोशिश कर रहा हूं, यह है कि विभिन्न नोड्स पर कलाकारों के बीच राज्य कैसे साझा करें। मेरा पहला विचार एक ऊंट अभिनेता होना था जो Minecraft क्लाइंट से टीसीपी स्ट्रीम पढ़ेगा और फिर इसे बैलेंसर लोड करने के लिए भेज देगा जो अनुरोध को संसाधित करने वाले नोड का चयन करेगा और फिर टीसीपी के माध्यम से क्लाइंट को कुछ प्रतिक्रिया भेजेंगे। आइए कहें कि मेरे पास एक प्रमाणीकरण सेवा लागू करने वाला अभिनेता है जो जांचता है कि उपयोगकर्ता द्वारा प्रदान किए गए प्रमाण-पत्र मान्य हैं या नहीं। प्रत्येक नोड में ऐसे अभिनेता (या शायद उनमें से अधिक) होंगे और सभी कलाकारों के पास हर समय उपयोगकर्ताओं के समान डेटाबेस (या राज्य) होना चाहिए। मेरा सवाल है, इस राज्य को रखने के लिए सबसे अच्छा तरीका क्या है? मैं कुछ समाधान मैं के बारे में सोच सकता है के साथ आया है, लेकिन मैं तो कृपया दोष का कहना है इस तरह कुछ नहीं किया है:क्लस्टर में अभिनेताओं के बीच अक्का और राज्य
समाधान # 1: एक डेटाबेस में राज्य रखें। यह शायद इस प्रमाणीकरण उदाहरण के लिए बहुत अच्छी तरह से काम करेगा जहां राज्य केवल उपयोगकर्ता नाम और पासवर्ड की सूची जैसे कुछ द्वारा प्रतिनिधित्व किया जाता है, लेकिन शायद यह उन मामलों में काम नहीं करेगा जहां राज्य में ऐसी वस्तुएं होती हैं जिन्हें आसानी से पूर्णांक और तारों में विभाजित नहीं किया जा सकता है।
समाधान # 2: हर बार एक निश्चित अभिनेता से अनुरोध होगा कि यह राज्य बदल जाएगा, अभिनेता अनुरोध संसाधित करने के बाद, उसी प्रकार के अन्य सभी कलाकारों के परिवर्तन के बारे में जानकारी प्रसारित करेगा, जो बदलेगा मूल अभिनेता द्वारा भेजी गई जानकारी के अनुसार उनका राज्य। यह बहुत अक्षम और बदसूरत लगता है।
समाधान # 3: एक निश्चित नोड के बाद एक राज्य नोड, जिसमें अभिनेताओं कि पूरा सर्वर के राज्य का प्रतिनिधित्व किया जाएगा के प्रकार के रूप में सेवा करते हैं। इस तरह के नोड में अभिनेताओं को छोड़कर कोई अन्य अभिनेता नहीं होगा और जब भी उन्हें कुछ डेटा चाहिए तो "राज्य नोड" में कलाकारों से पूछेंगे। यह भी अक्षम और दयालु गलती-गैर-प्रूफ लगता है।
तो आपके पास यह है। केवल समाधान जो मुझे वास्तव में पसंद है वह पहला है, लेकिन जैसा कि मैंने कहा, यह शायद समस्याओं के केवल सीमित सीमित सबसेट में काम करता है (जब राज्य को रेडिस संरचनाओं में विभाजित किया जा सकता है)। अधिक अनुभवी गुरुओं से कोई प्रतिक्रिया बहुत सराहना की जाएगी। सादर, टॉमस हरमन
अरे, उत्तर के लिए बहुत बहुत धन्यवाद। ऐसा लगता है कि यह होगा:]। मुझे वास्तव में कुछ समय के लिए इस समस्या के बारे में सोचना होगा कि क्या मुझे वास्तव में संचालन पर परमाणुता की आवश्यकता है या नहीं। मैं किताब की जांच करूंगा, टिप के लिए धन्यवाद। या शायद मैं मास्टर के दास के रूप में अन्य नोड्स का उपयोग कर सकता हूं जो सभी जानकारी रखेगा और अन्य नोड्स केवल संदेश प्राप्त करेंगे और मास्टर से प्राप्त डेटा पर कुछ कंप्यूटिंग करेंगे। हालांकि, अभी भी सही नहीं लगता है। – Arg
आपका स्वागत है। बस याद रखें कि मास्टर नोड रखने में समस्या हमेशा यह होगी कि यह विफलता का एक बिंदु है। यदि आप गलती सहनशीलता के बारे में चिंतित हैं, तो यह एक मुद्दा हो सकता है। शायद आप कुछ वितरित हैश टेबल कार्यान्वयन को भी देख सकते हैं ताकि वे आपकी मदद कर सकें (उदा। अपाचे कैसंद्रा)। – axel22
हाँ गलती सहनशीलता एक मुद्दा नहीं है। वैसे भी, इस चरण में नहीं। इसके अलावा, मुझे किसी भी तरह से परिभाषा से विशेषाधिकार प्राप्त नोड की आवश्यकता है। एक Minecraft क्लाइंट कनेक्ट होगा। – Arg