लॉगस्टैश और इलास्टिक्स के बीच डेटा ब्रोकर / मैसेजिंग सिस्टम के रूप में Redis Vs RabbitMQ


90

हम लॉगस्टैश शिपर्स द्वारा लॉग जानकारी इकट्ठा करने के लिए एक आर्किटेक्चर को परिभाषित कर रहे हैं जो विभिन्न मशीनों में स्थापित हैं और डेटा को एक इलास्टिक्स खोज सर्वर में केन्द्रित करते हैं और किबाना को ग्राफिकल परत के रूप में उपयोग करते हैं। हमें डिलीवरी प्रदान करने के लिए लॉगस्टैश शिपर्स और इलास्टिक्सखोज के बीच एक विश्वसनीय मैसेजिंग सिस्टम की आवश्यकता है। लॉगस्टैश शिपर्स और इलास्टिसर्च या इसके विपरीत के बीच डेटा ब्रोकर / मैसेजिंग सिस्टम के रूप में रैबिटक्यू पर रेडिस का चयन करते समय किन कारकों पर विचार किया जाना चाहिए?

जवाबों:


94

Redis और RabbitMQ दोनों के मूल्यांकन के बाद मैंने निम्नलिखित कारणों के लिए RabbitMQ को अपना ब्रोकर चुना:

  1. RabbitMQ आपको ब्रोकर को भेजने वाले डेटा को एन्क्रिप्ट करने के लिए SSL प्रमाणपत्रों का उपयोग करके सुरक्षा की एक अंतर्निहित परत का उपयोग करने की अनुमति देता है और इसका मतलब है कि कोई भी आपके डेटा को सूँघ नहीं पाएगा और आपके महत्वपूर्ण संगठनात्मक डेटा तक पहुँच प्राप्त कर सकता है।
  2. RabbitMQ एक बहुत ही स्थिर उत्पाद है जो बड़ी मात्रा में घटनाओं को प्रति सेकंड और कई कनेक्शनों को बोतल की गर्दन के बिना संभाल सकता है।
  3. हमारे संगठन में हमने पहले से ही RabbitMQ का उपयोग किया था और इसे उपयोग करने के बारे में अच्छा आंतरिक ज्ञान था और शेफ के साथ पहले से तैयार एकीकरण था।

स्केलिंग के बारे में, RabbitMQ में एक बिल्ट इन क्लस्टर कार्यान्वयन है जिसे आप एक निरर्थक ब्रोकर वातावरण को लागू करने के लिए लोड बैलेंसर के अतिरिक्त उपयोग कर सकते हैं।

क्या मेरा RabbitMQ क्लस्टर एक्टिव या एक्टिव पैसिव है?

अब RabbitMQ का उपयोग करने के कमजोर बिंदु पर:

  1. अधिकांश लोगस्टैश शिप्स RabbitMQ का समर्थन नहीं करते हैं, लेकिन दूसरी ओर, बेवर नाम के सर्वश्रेष्ठ व्यक्ति का एक कार्यान्वयन है, जो एक समस्या के बिना RabbitMQ को डेटा भेजेगा।
  2. बीवर ने अपने वर्तमान संस्करण में RabbitMQ के साथ जो कार्यान्वयन किया है, वह प्रदर्शन (मेरे उद्देश्यों के लिए) पर थोड़ा धीमा है और एक सर्वर से 3000 घटनाओं / सेकंड की दर को संभालने में सक्षम नहीं था और समय-समय पर सेवा दुर्घटनाग्रस्त हो गई।
  3. अभी मैं एक फिक्स पर काम कर रहा हूं, जो रैबिटक्यू के लिए प्रदर्शन की समस्या को हल करेगा और बीवर शिपर को और अधिक स्थिर बना देगा। पहला समाधान अधिक प्रक्रियाओं को जोड़ना है जो एक साथ चल सकते हैं और शिपर को अधिक शक्ति देंगे। दूसरा उपाय यह है कि बीवर को खरगोशों को डेटा भेजने के लिए बदलकर अतुल्यकालिक रूप से किया जाए जो सैद्धांतिक रूप से बहुत तेज होना चाहिए। मुझे उम्मीद है कि मैं इस सप्ताह के अंत तक दोनों समाधानों को लागू करना समाप्त कर दूंगा।

आप इस मुद्दे का अनुसरण कर सकते हैं: https://github.com/josegonzalez/python-beaver/issues/33

और यहाँ पुल अनुरोध की जाँच करें: https://github.com/josegonzalez/python-beaver/pull/624

यदि आपके पास अधिक प्रश्न हैं तो टिप्पणी छोड़ने के लिए स्वतंत्र महसूस करें।


3
क्या Redis में RabbitMQ की तुलना में कोई मजबूत बिंदु है? रेडिस को कॉन्फ़िगर करना आसान लगता है। और अगर आपको बहुत बड़ी जरूरत नहीं है और सुरक्षा को अन्य तरीकों से नियंत्रित किया जा रहा है, तो RabbitMQ आवश्यक नहीं हो सकता है। मुझे सही जवाब दो अगर मैं गलत हूँ।
रिकार्डो एमएस

आप सही हैं लेकिन यह सुनिश्चित करने के लिए कि आपको दो उत्पादों के बीच के प्रदर्शन की तुलना करने की आवश्यकता होगी
टॉम क्रेगेनबिल्ड

4
"RabbitMQ एक बहुत ही स्थिर उत्पाद है जो प्रति सेकंड बड़ी मात्रा में घटनाओं को संभाल सकता है और बोतल के गर्दन के बिना कई कनेक्शन हो सकता है।" - मुझे पूरा यकीन है कि यह सच है और साथ ही रेडिस भी है। तो यह Reddit से अधिक खरगोश का एक फायदा नहीं है
मार्टिन Thoma

"RabbitMQ आपको एसएसएल का उपयोग करके सुरक्षा की एक अंतर्निहित परत का उपयोग करने की अनुमति देता है" - क्या रेड्डी परिवहन लेयर एन्क्रिप्शन को भी अनुमति नहीं देता है?
मार्टिन थोमा

2
2019 में अभी भी टीएलएस में
रेडिस का

54

कुछ मूल संदेश ब्रोकर क्षमताओं के बावजूद Redis एक महत्वपूर्ण मूल्य डेटा स्टोर के रूप में बनाया गया है।

RabbitMQ एक मैसेज ब्रोकर के रूप में बनाया गया है। यह स्वाभाविक रूप से संदेश ब्रोकर क्षमताओं के बहुत सारे है।


1
Redis 5 में स्ट्रीम की शुरुआत के साथ Redis के बारे में आपका कथन अधिक सटीक नहीं है। बड़े पैमाने पर परिदृश्यों के लिए RabbitMQ निश्चित रूप से एक बेहतर विकल्प है। एक छोटे से मध्यम स्तर के परिदृश्य के लिए (जो दुनिया में सबसे अधिक परियोजनाएं हैं), रेडिस एक विश्वसनीय, तेज और वैकल्पिक कॉन्फ़िगर करने में आसान है।
रेजा

प्रतिबद्धता के लिए धन्यवाद, यह अच्छा होगा यदि कोई यहां रेडिस की नई विशेषताओं के बारे में अपना अनुभव लिखता है।
फेरहट

44

मैं इस विषय पर कुछ शोध कर रहा हूं। यदि प्रदर्शन महत्वपूर्ण है और दृढ़ता नहीं है, तो RabbitMQ एक आदर्श विकल्प है। रेडिस एक अलग इरादे के साथ विकसित की गई तकनीक है।

Redis पर RabbitMQ का उपयोग करने के लिए पेशेवरों की सूची निम्नलिखित है:

  • RabbitMQ उन्नत संदेश कतारबद्ध प्रोटोकॉल (AMQP) का उपयोग करता है जिसे SSL, सुरक्षा की अतिरिक्त परत का उपयोग करने के लिए कॉन्फ़िगर किया जा सकता है।
  • रैबिट्स मैसेज को स्वीकार करने में रेडिस का लगभग 75% समय लेता है।
  • RabbitMQ संदेशों के लिए प्राथमिकताओं का समर्थन करता है, जिसका उपयोग श्रमिकों द्वारा पहले उच्च प्राथमिकता वाले संदेशों का उपभोग करने के लिए किया जा सकता है।
  • यदि संदेश का उपभोग करने के बाद कोई भी कर्मचारी दुर्घटनाग्रस्त हो जाता है, तो संदेश खोने का कोई मौका नहीं है, जो कि रेडिस के साथ नहीं है।
  • RabbitMQ में संदेशों को अलग-अलग कतारों में निर्देशित करने के लिए एक अच्छा मार्ग है।

RabbitMQ का उपयोग करने के लिए कुछ सहमति:

  • RabbitMQ को बनाए रखने के लिए थोड़ा मुश्किल हो सकता है, क्रैश क्रैश करना मुश्किल हो सकता है।
  • नोड-नाम या नोड-आईपी में उतार-चढ़ाव डेटा हानि का कारण बन सकता है, लेकिन यदि अच्छी तरह से प्रबंधित किया जाता है, तो टिकाऊ संदेश समस्या को हल कर सकते हैं।

3
रेडिस के पास Sorted Setsप्राथमिकता कतार जैसी बातचीत की अनुमति है। Redis को विभिन्न सर्वरों पर अलग-अलग कतारों में अलग-अलग संदेश भेजने के लिए भी क्लस्टर / शार्ल्ड किया जा सकता है। Redis के लिए SSL के बारे में निश्चित रूप से निश्चित नहीं है, लेकिन मैं AWS इलास्टैचे को देख रहा हूं और उनका Redis 3.2.6 आराम और पारगमन एन्क्रिप्शन की अनुमति देता है। नोट: बिल्कुल नहीं कहा जा रहा है कि रेडिस इस मामले के लिए बेहतर है; केवल उन लोगों की ओर इशारा करते हुए रेडिस पर रैबिटएमक्यू चुनने का कारण नहीं हो सकता है।
dwanderson

1
यह भी मत भूलो कि Redis सिंगल थ्रेडेड है इसलिए यदि आपके पास बहुत सारे प्रकाशक / उपभोक्ता हैं जो एक मुद्दा हो सकता है।
केदार

5

मैं एक ही बात सोच रहा हूं। लॉगस्टैश के लोगों की पहले की सिफारिशें रैबिटएमक्यू ( http://logstash.net/docs/1.1.1/tutorials/getting-started-centralized ) पर रेडिस की सिफारिश करती हैं , हालांकि नोटों का वह हिस्सा वर्तमान दस्तावेज़ में मौजूद नहीं है, हालांकि यहां स्पाइक्स से निपटने के लिए ब्रोकर का उपयोग करने पर सामान्य नोट https://www.elastic.co/guide/en/logstash/current/deploying-and-scaling.html

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


2

पूछने के लिए त्वरित प्रश्न:

  1. आपको ब्रोकर की आवश्यकता क्यों है? यदि आप इन सर्वर से फ़ाइलों को पढ़ने के लिए लॉगस्टैश या लॉगस्टैश-फारवर्डर का उपयोग कर रहे हैं, तो पाइप लाइन की भीड़ हो जाने पर वे दोनों धीमा हो जाएंगे।
  2. क्या आपको खरगोश या रेडिस का प्रशासन करने का कोई अनुभव है? सभी चीजें समान हैं, जिस टूल को आप जानते हैं कि कैसे उपयोग करना बेहतर उपकरण है।

राय के दायरे में, मैं एक ब्रोकर के रूप में रेडिस चला रहा हूं, और इससे नफरत करता हूं। बेशक, यह रेडिस के साथ मेरी अनुभवहीनता हो सकती है (उत्पाद के साथ एक समस्या नहीं है), लेकिन यह पाइप लाइन की सबसे कमजोर कड़ी थी और जब हमें इसकी सबसे ज्यादा जरूरत थी तब हमेशा असफल रही।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.