2011-06-15 25 views
12

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

हम नहीं चाहते हैं कि इंडेक्सिंग खोजकर्ता को घुमाए, इसलिए हमारा विचार दो सोलर सर्वर एक प्रतिकृति सेटअप में विभिन्न मशीनों पर चल रहा है। पहला सौर उदाहरण सूचकांक होगा। यह डेल्टा को इंडेक्स करने के लिए DataImportHandler का उपयोग करेगा और अतिसंवेदनशील प्रतिबद्ध दरों को रोकने के लिए स्वत: अनुकूल सक्षम होगा। अनुसूचित अवधि के दौरान सूचकांक अनुकूलन होगा। दूसरा सौर उदाहरण (दास) प्राथमिक खोजकर्ता होगा और इसकी अनुक्रमणिका इंडेक्स RAIDed ठोस राज्य ड्राइव पर संग्रहीत होगी।

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

+0

मैंने बैकअप मास्टर के रूप में पुनरावर्तक का उपयोग करने की कोशिश की, लेकिन प्राथमिक मास्टर डाउन होने पर पुनरावर्तक इसे गुलामों में दोहराने में विफल रहता है, क्या कोई मेरी मदद कर सकता है? मेरी पोस्ट यहां है (https://stackoverflow.com/questions/49079050/solr-repeater-stops-letting-its-slave-polling-from-it-when-its-master-is-down) – wwood

उत्तर

13

जैसा कि आपने पहचान की है कि खोज विफलता प्रतिकृति का उपयोग करके संभाला जा सकता है।

मास्टर विफलता थोड़ा और मुश्किल है। निम्नलिखित तार्किक सेटअप

+--------+  +--------+ 
| Slave | ... | Slave | 
+--------+  +--------+ 
    |    | 
    v (replicate) v 
+---------------------------+ 
|  Load balancer   | 
+---------------------------+ 
     /  \ 
     v   v 
+--------+  +--------+ 
| Master | ---> | Master | 
+--------+  +--------+ 
  • तारीख तक मास्टर सूचकांक रखने के लिए repeater मोड इस्तेमाल किया जा सकता की तरह कुछ करने के लिए एक विचार है, जहां एक गर्म बैकअप मास्टर प्राथमिक गुरु से दोहरा सकते
  • या तो
    • प्राथमिक मास्टर पर Ping हैंडलर जैसे कुछ जीवित अधिसूचना के रूप में उपयोग करें। यदि यह नहीं पहुंचा जा सकता है, तो एक छोटा प्रोग्रामेटिक घटक लिखें जो द्वितीयक मास्टर के डेटा आयात-हैंडलर को ट्रिगर करता है।
    • डेटा आयात हैंडलर को सभी मास्टर सर्वर पर सक्रिय रखें, जिससे उनमें से कोई भी अतिरिक्त कॉन्फ़िगरेशन के बिना ऑपरेशन करने की अनुमति देता है।

ध्यान दें कि आप लोड संतुलन ऐसी है कि एक गुलाम केवल समय में किसी भी बिंदु पर एक मास्टर से दोहराने कर सकते हैं विन्यस्त करने की जरूरत हो सकती है।

एक तरफ ध्यान दें, आपके कुछ अनुभवों को इस तरह के एक विशाल डेटा सेट को अनुक्रमणित करना दिलचस्प होगा।

+0

आपकी प्रतिक्रिया के लिए धन्यवाद , जोहान। सोलर मेलिंग सूची पर लोगों ने एक समान सेटअप की सिफारिश की। – ikarous

+1

इस तरह की बड़ी संख्या में पंक्तियों को इंडेक्स करना वास्तव में कुछ अनूठी चुनौतियों का सामना कर रहा है। एक पूर्ण अनुक्रमण में कम से कम आठ घंटे लगते हैं, इसलिए किसी भी स्कीमा में परिवर्तन अत्यधिक समय लेते हैं। कुछ अपवादों के साथ, इंडेक्स आकार के बावजूद सिंगल-क्वेरी प्रदर्शन आश्चर्यजनक रूप से अच्छा है। फ़ज़ी खोजों को कभी-कभी पूरा होने में कई सेकंड लग सकते हैं, और शुरुआत में हमें दिनांक सीमा प्रश्नों के साथ समस्याएं थीं।हमने दिनांक सीमा प्रश्नों पर प्रश्न समय कम करने में कामयाब रहे हैं 1) अनुक्रमित क्षेत्र की ग्रैन्युलरिटी को दिन-स्तर पर कम करने, और 2) दिनांक फ़ील्ड के प्रकार ट्रीडेट को बहुत कम सटीक मूल्य के साथ स्विच करके। – ikarous

+0

सोलर को इस तरह से धक्का दिया जाना वास्तव में दिलचस्प है। स्मृति खपत कभी आपके लिए एक समस्या थी? –