2013-03-14 5 views
22

शायद अन्य लोचदार खोज देवताओं के लिए एक बहुत ही आसान (और गूंगा) प्रश्न, इन दोनों के बीच क्या अंतर है?लोचदार खोज नोडबिल्डर बनाम ट्रैनपोर्ट क्लाइंट

मैं जावा वेबैप से रिमोट लोचदार खोज सर्वर से कनेक्ट कर रहा हूं, अब तक मैं ट्रांसपोर्ट क्लाइंट का उपयोग कर रहा हूं लेकिन मैं सोच रहा था कि क्या नोडबिल्डर का उपयोग किया जा सकता है, या नोडबिल्डर का उपयोग केवल एम्बेडेड क्लाइंट के लिए किया जाना चाहिए?

यदि इनमें से किसी भी दूरस्थ रिमोट ईएस सर्वर से कनेक्ट करने के लिए उपयोग किया जा सकता है, तो स्मृति और प्रदर्शन के मामले में कौन सा बेहतर होना चाहिए?

यदि कोई मुझे रिमोट ईएस सर्वर से कनेक्ट करने वाले नोडबिल्डर को इंगित कर सकता है तो यह बहुत अच्छा होगा क्योंकि मुझे कोई भाग्यशाली खोज नहीं है।

धन्यवाद।

+1

यहां एक नज़र डालें: http://blog.trifork.com/2012/09/13/elasticsearch-beyond-big-data-running-elasticsearch-embedded/ और [elasticsearch दस्तावेज़ीकरण] पर भी (http://www.elasticsearch.org/guide/reference/java-api/client.html), अंतर अच्छी तरह से समझाया गया है। – javanna

उत्तर

28

नोडबिल्डर का उपयोग क्लस्टर से कनेक्ट करने के लिए भी किया जा सकता है।

Node node = nodeBuilder().clusterName("yourcluster").client(true).node(); 
Client client = node.client(); 

यह क्लस्टर में एक और नोड के रूप में शामिल होगा और पूरे टोपोलॉजी से अवगत होगा। नोड्स का उपयोग करके, आप अन्य चलने वाले नोड्स को खोजने के लिए मल्टीकास्ट का उपयोग कर सकते हैं।

मेरी राय यह है कि से TransportClient का उपयोग करना पसंद करते हैं क्योंकि ट्रांसपोर्ट क्लाइंट बंद होने पर अन्य क्लस्टर नोड्स बेकार जानकारी प्राप्त नहीं करेंगे। जब कोई नोड क्लाइंट बंद हो जाता है, तो प्रत्येक नोड को यह पता होना चाहिए कि भले ही उन्हें इसे प्रबंधित करने की आवश्यकता न हो क्योंकि इसमें कोई डेटा नहीं है। इसके अलावा, मैंने डीबग मोड में देखा है कि NodeClient TransportCLient से अधिक Threads शुरू करता है। तो मुझे लगता है कि ट्रांसपोर्ट क्लाइंट में कम स्मृति पदचिह्न है।

वैसे, यदि आप वसंत का उपयोग कर रहे हैं, तो आप इसके लिए spring-elasticsearch कारखानों का उपयोग कर सकते हैं। यदि नहीं, तो आप हमेशा यह देखने के लिए स्रोत कोड पर एक नज़र डाल सकते हैं कि मैं नोड क्लाइंट बनाम TransportClient का प्रबंधन कैसे करता हूं।

उम्मीद है कि इससे मदद मिलती है।

संपादित करें 2016-03-09: NodeClient का उपयोग नहीं किया जाना चाहिए। यदि इसकी आवश्यकता है, तो लोगों को क्लाइंट नोड बनाना चाहिए (node.data: false और node.master: false के साथ एक लोचदार खोज नोड लॉन्च करना चाहिए) और स्थानीय रूप से कनेक्ट करने के लिए TransportClient का उपयोग करें।

+0

बहुत बहुत धन्यवाद! यह बिल्कुल सही प्रकार का उत्तर है जिसे मैं ढूंढ रहा था! – im8bit

+0

क्या आप 2016-03-09 से थोड़ा और संपादित कर सकते हैं? 'नोड क्लाइंट' का उपयोग करने के बजाय अलग नोड बनाने का क्या कारण है? – rapstacke

+0

निश्चित: https://github.com/elastic/elasticsearch/issues/15383 – dadoonet

18

अगर मैं सही ढंग से समझ में आ प्रलेखन, यह नोड क्लाइंट का उपयोग करना लाभदायक होता है, कम से कम अगर आप टुकड़े है:

[नोड] क्लाइंट का उपयोग करने का लाभ यह है कि आपरेशन स्वचालित रूप से ले जाया जाता है है नोड (ओं) को "डबल हॉप" किए बिना, पर ऑपरेशन निष्पादित करने की आवश्यकता होती है। उदाहरण के लिए, सूचकांक ऑपरेशन स्वचालित रूप से शेर्ड पर निष्पादित किया जाएगा कि यह को मौजूदा पर समाप्त कर देगा।

बनाम

यह [परिवहन ग्राहक] क्लस्टर में शामिल नहीं है, लेकिन बस एक या अधिक प्रारंभिक परिवहन पतों हो जाता है और प्रत्येक कार्य पर राउंड रोबिन फैशन में उन लोगों के साथ संचार करता है (सबसे कार्यों हालांकि शायद "दो हॉप" संचालन होगा)।

मैं इस व्याख्या के रूप में, एक नोड का उपयोग कर (अधिमानतः सही पर सेट ग्राहक के साथ) कि क्लस्टर मिलती है और फिर उस नोड पर ग्राहकों का उपयोग करते हैं, आप अनुरोध सीधे क्लस्टर में सही नोड के लिए भेज देंगे।

TransportClient का उपयोग करना, आप किसी भी नोड है, जो तब अनुप्रेषित (या संभवतः अनुरोध, यकीन नहीं आगे) सही नोड के लिए अनुरोध ("दो हॉप्स") होगा करने के लिए कनेक्ट करेंगे

नोड क्लाइंट का उपयोग किया जाना चाहिए नेटवर्क यातायात और नोड्स पर लोड के मामले में अधिक कुशल।

0

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

स्कैटर इकट्ठा करने के लिए नोड क्लाइंट का उपयोग किया जा सकता है ताकि यह डेटा नोड्स से कुछ प्रोसेसिंग को कम कर सके।

सुनिश्चित नहीं है कि परिवहन क्लाइंट स्कैटर इकट्ठा करता है।

संबंधित मुद्दे