हमारे आवेदन में हमारे पास एक लोचदार खोज क्लस्टर है जो हमारे सभी ग्राहकों के लिए साझा किया जाता है।

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

अधिकांश ग्राहकों के लिए यह कोई समस्या नहीं है। उनका डेटा ध्यान देने योग्य अंतर बनाने के लिए पर्याप्त नहीं है (3s -> 10s कभी-कभी कोई बड़ी बात नहीं है)। लेकिन बड़े ग्राहकों के लिए, समय का अंतर मिनटों का हो सकता है और यह बहुत ध्यान देने योग्य है।

हम जो चाहते हैं, सबसे ऊपर, वह निरंतरता है- भले ही ये ऑपरेशन औसतन धीमे हों। ऐसा करने के लिए, हम इन विशेष क्लाइंट को समर्पित नोड्स देना चाहते हैं, जबकि अन्य सभी क्लाइंट साझा नोड्स का उपयोग करते हैं। पहली नज़र में, ऐसा लगता है कि ऐसा करने का एकमात्र तरीका एक समर्पित क्लस्टर बनाना है।

dedicated-clusters

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

dedicated nodes

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

क्या रूटिंग नियम बनाने का कोई तरीका है कि नोड्स को स्पष्ट रूप से जोड़ा जा सकता है। जैसे मैं रूटिंग कुंजी 582123 में 3 नोड्स जोड़ना चाहता हूं।

क्या मौजूदा मार्गों से मेल नहीं खाने वाले नोड्स के लिए डिफ़ॉल्ट रूटिंग नियम बनाने का कोई तरीका है? यदि नहीं तो हमारे पास हमेशा एक स्पष्ट डिफ़ॉल्ट मार्ग हो सकता है। हमें अभी भी रूट लुकअप एप्लिकेशन साइड करने की आवश्यकता होगी लेकिन यह अभी भी मल्टी-क्लस्टर परिदृश्य में जटिलता को कम करेगा।

2
micah 30 मार्च 2020, 19:15

1 उत्तर

सबसे बढ़िया उत्तर

आपके द्वारा उपयोग किए जा रहे इलास्टिक्स खोज के संस्करण और आपके सूचकांकों के सेटअप के आधार पर, आप प्रति-सूचकांक आवंटन। मूल रूप से आप एक नोड को एक विशेषता देते हैं और फिर आप इंडेक्स स्तर सेटिंग्स पर निर्दिष्ट करते हैं जहां वह इंडेक्स (अधिक सटीक, इसके शार्क) समाप्त होना चाहिए। जैसा कि आप प्रलेखन में पढ़ेंगे, आपको यह सुनिश्चित करने की आवश्यकता है कि अन्य बाधाओं का उल्लंघन नहीं किया जा रहा है उदा।

शार्ड्स को केवल तभी स्थानांतरित किया जाता है जब ऐसा करना संभव हो, बिना किसी अन्य रूटिंग बाधा को तोड़े, जैसे कि एक ही नोड पर प्राथमिक और प्रतिकृति शार्क को कभी भी आवंटित नहीं करना।

इसका मतलब है कि हालांकि आपको अलग-अलग सूचकांकों की आवश्यकता है।

1
Alkis Kalogeris 30 मार्च 2020, 22:54