2014-10-23 7 views
6

मैं एक .NET एप्लिकेशन पर काम कर रहा हूं जो खोज इंजन के रूप में सोलर का उपयोग करता है। मैंने दो सर्वर (एक प्रतिकृति के लिए एक) के साथ एक SolrCloud स्थापना कॉन्फ़िगर किया था और मैंने इंडेक्स को शर्ड्स में विभाजित नहीं किया (shards = 1 की संख्या)। मैंने पढ़ा है कि सोलरक्लाउड (जुकीपर के माध्यम से) कुछ भार संतुलन कर सकता है, लेकिन मुझे समझ में नहीं आया कि कैसे। यदि कोई कॉल एक विशिष्ट पता कहता है जहां सोलर का उदाहरण तैनात किया जाता है, तो क्वेरी केवल उस विशिष्ट सर्वर के लॉग पर दिखाई देती है।सोलरक्लाउड लोड-बैलेंसिंग

SolrCloud मैं के प्रलेखन पर पाया है कि:


स्पष्ट विकल्प (से सीमांकित |) दे रही है, टुकड़े आप क्वेरी करना चाहते हैं के पते निर्दिष्ट लोड संतुलन और असफल ओवर के लिए इस्तेमाल किया:

http://www.ipaddress.com:8983/solr/collection1/select?shards=www.ipaddress.com:8983/solr|www.ipaddress.com:8900/solr,www.ipaddress.com:7574/solr|www.ipaddress.com:7500/solr


मैं अगर एक एक पूरे सूचकांक (केवल एक शार अगर मैं इस संकेतन का उपयोग कर सकते हैं लोड संतुलन भी मजबूर करने के लिए सोच रहा हूँ डी) और उस मामले में लोड-बैलेंसर कैसे काम करता है।

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

आपकी मदद के लिए धन्यवाद।

सादर, जैकोपो

उत्तर

4

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

1

के बाद से आप केवल एक ही ठीकरा, सर्वर है कि अनुरोध परिणाम के साथ जवाब देंगे प्राप्त कर रहा है है, यह अन्य प्रतिकृति के लिए एक और अनुरोध है जब यह डेटा है प्रदर्शन नहीं करेगा स्थानीय स्तर पर। Java CloudSolrServer क्लाइंट ZooKeeper से जुड़ता है और जानता है कि कौन से सर्वर ऊपर या नीचे हैं और सभी सक्रिय सर्वरों पर उचित रूप से भार संतुलन निष्पादित करेंगे। मुझे विश्वास नहीं है कि इस विशिष्ट ग्राहक के लिए कोई बंदरगाह .NET पोर्ट उपलब्ध हैं।