2012-12-07 47 views
16

के लिए पब/उप में ज़ीरोएमक्यू बनाम रेडिस क्लस्टर बनाम रेडिस क्लस्टर, यदि मैं एक विशाल वितरित प्रणाली तैयार करना चाहता हूं जिसका थ्रूपुट सिस्टम में चैनलों की संख्या और चैनलों की संख्या के साथ रैखिक रूप से स्केल करना चाहिए, जो बेहतर होगा?क्षैतिज रूप से स्केल किए गए वितरित सिस्टम

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

2) ZeroMQ 3.x के बाद से, यह करता है सर्वर साइड छानने, तो यह भी कुछ समय जटिलता है, लेकिन मैं दस्तावेज में इसके बारे में कुछ नहीं देखा है। अगर मैं इसे स्केल करना चाहता था, तो मेरे पास बस जो भी चैनल प्रकाशित हो सकते हैं, और प्रत्येक ग्राहक सभी सर्वर से कनेक्ट होगा, और वांछित चैनल के लिए सब्सक्राइब करेगा। यह अच्छा लगता है।

तो इनमें से कौन सा एक विशाल प्रकाशक प्रणाली के क्षैतिज स्केलिंग के लिए बेहतर है? मुझे अन्य समाधान क्या देखना चाहिए? याद रखें, मैं विलंबता और थ्रूपुट को कम करना चाहता हूं, लेकिन क्षैतिज पैमाने पर स्केल करने में सक्षम हूं।

उत्तर

14

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

+0

क्या आपके दावे का समर्थन करने वाला डेटा है? क्या आप अपने दावे के बारे में अपना प्रश्न पढ़ सकते हैं? http://stackoverflow.com/questions/26319304/redis-of-channels-degrading-latency-how-to-prevent-degradation – ealeon

2

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

आपको अवगत होना चाहिए कि रेडिस क्लस्टर का वर्तमान कार्यान्वयन इंटर-नोड बस का उपयोग करके सभी क्लस्टर नोड्स में प्रकाशित संदेश वितरित करता है। यह दृष्टिकोण मानता है कि पब्लिशिस रेडिस पर बेहद सस्ता है (जैसा कि इस issue on Github में बताया गया है)।

हालांकि, एक छोटा ओवरहेड शामिल है जो अंतर-नोड संचार है। जैसा कि आप इस ओवरहेड को स्केल करते हैं, उतना ही महत्वपूर्ण होगा। एक और Redis Cluster implementation है, मुझे पता है - कृपया ध्यान दें कि यह एक वाणिज्यिक है - जिसमें चैनल या पैटर्न क्लस्टर नोड्स में वितरित किए जाते हैं, जिस तरह से रेडिस कुंजी वितरित होते हैं। कम से कम विक्रेता के अनुसार, यह अंतर-नोड संचार के ऊपरी हिस्से को बचाएगा और प्रदर्शन में वृद्धि करेगा, लेकिन मैंने इसे स्वयं बेंचमार्क नहीं किया है।