2011-09-07 8 views
8

अगर मैं संदेश कतार उपयोग करने वाले प्रकाशक/ग्राहकों के दर्जनों के साथ एक प्रणाली का निर्माण किया गया था, ऐसा लगता है मैं कुछ नेटवर्क विन्यास विकल्प हैं:बनाम पब/उप मैसेजिंग में दूरस्थ कतारों स्थानीय

  1. मैं एक क्लस्टर हो सकता था दलाल है कि सभी मशीनों का उपयोग करें - प्रत्येक मशीन एक स्थानीय कतार
  2. मैं हर मशीन पर स्थानीय रूप दलालों स्थापित कर सकता है नहीं होगा, और उपयोग की दुकान और आगे रिमोट मशीनों को संदेश देने के

विभिन्न प्रौद्योगिकियों को लागू करने लगते हैं विभिन्न विन्यास - उदाहरण के लिए, एमएस एमक्यू के लिए प्रत्येक मशीन की अपनी स्थानीय कतार रखने की आवश्यकता होती है, जबकि प्रत्येक उपभोक्ता पर स्थानीय कतारों के बिना टिब्को ईएमएस अक्सर क्लस्टर में उपयोग किया जाता है।

स्थानीय कतार नहीं होने के लिए डाउनसाइड्स क्या हैं, और कौन से कारक निर्णय को प्रभावित करते हैं?

उत्तर

5

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

एमएसएमक्यू स्टोर-एंड-फॉरवर्ड भी है, लेकिन यह किसी भी क्लस्टरर्ड रूटिंग क्षमताओं को प्रदान नहीं करता है। इसका मतलब है कि आवेदन को काम करना है (या इसके ऊपर एक परत है, जैसे कि MassTransit या NServiceBus यह आपके लिए करता है)।

जब मैं टीआईबीसीओ के बारे में सोचता हूं, तो मुझे ईएमएस सर्वर के केंद्रीकृत समूह के बारे में लगता है कि एप्लिकेशन सर्वर स्थानीय रूप से ब्रोकर उदाहरण चलाने के बजाए संवाद करते हैं। जीआईआई उपकरण जो ईएमएस और बिजनेसवर्क्स एप्लिकेशन सर्वर के चारों ओर लपेटते हैं, वास्तव में उस दुनिया में एक मॉडल को मजबूर करते हैं।

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

+0

टीआईबीसीओ ईएमएस ब्रोकरों के बीच रूटिंग का समर्थन करता है जो स्थानीय और केंद्रीकृत दोनों सर्वरों की अनुमति देता है। हालांकि सबसे आम सेटअप एक केंद्रीकृत क्लस्टर है। इसके अलावा स्थानीय उदाहरणों में उच्च लाइसेंस शुल्क लग सकता है। – stoft

3

मैं उद्यम करता हूं कि स्थानीय परिदृश्य अधिकांश परिदृश्यों में आवश्यक होगा।

संदेश को टिकाऊ होने की आवश्यकता होने पर स्थानीय कतार आवश्यक है। दूसरे शब्दों में, यदि रिमोट कतार का कनेक्शन अविश्वसनीय है और आप चाहते हैं कि संदेश अंततः अपने ग्राहकों तक पहुंच जाए, तो आप स्थानीय कतार की स्टोर-एंड-फ़ॉरवर्ड क्षमता चाहते हैं।

अगर संदेश को टिकाऊ होने की आवश्यकता नहीं है (घटना की गोलीबारी के बाद खोया जा सकता है), तो दूरस्थ साझा कतार एक विकल्प होगा।

आप NServiceBus distributor model पर देख सकते हैं, जो आपके दो परिदृश्यों का एक संकर होगा: प्रत्येक मशीन पर एक स्थानीय कतार रिमोट ब्रोकर/वितरक क्लस्टर को अग्रेषित करने के लिए।

2

मुझे यकीन नहीं है कि मैं एमएसएमक्यू पर टिप्पणियों से सहमत हूं क्योंकि वे पुराने हैं। शायद मुझे कुछ याद आ रही है।

दोनों परिदृश्य एमएसएमक्यू में समर्थित हैं।

परिदृश्य 1 में, ग्राहक ट्रांज़ेक्शनल रिमोट रिसीव (एमएसएमक्यू 4.0 और ऊपर) का उपयोग करेंगे। लेनदेन होने के नाते, प्राप्त विश्वसनीय है और संदेश टिकाऊ है (एमएसएमक्यू के पूर्व संस्करणों के विपरीत निरस्त प्राप्त सर्वर के संदेश को छोड़ देता है)।

परिदृश्य 2 में, स्टोर-एंड-फॉरवर्ड आउटगोइंग कतार क्लाइंट पर स्थानीय लेनदेन कतार (फिर विश्वसनीय और टिकाऊ) को भेजी जाएगी।

स्थानीय बनाम रिमोट कतारों का उपयोग करने के लिए विश्वसनीयता और स्थायित्व निर्णय लेने के बिंदु नहीं होना चाहिए। एमएसएमक्यू के लिए यहां पर भिन्नता भिन्नता है।

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