2013-04-15 5 views
5

मैंने अपनी कक्षा में संदेश कतार प्रणाली का अध्ययन किया है, लेकिन मुझे अभी भी यह नहीं मिला है कि ये संदेश पंक्ति प्रणाली वास्तविक समय परिदृश्यों में कैसे काम करती है? क्या कोई ट्यूटोरियल है जो मुझे पूरी तस्वीर पाने में मदद कर सकता है? क्या कोई मुझे बता सकता है कि ये सिस्टम कैसे काम करते हैं?संदेश कतार प्रणाली कैसे काम करता है?

+1

[विकिपीडिया लेख] (http://en.wikipedia.org/wiki/Message_queue) शुरू करने के लिए एक अच्छी जगह है। –

उत्तर

10

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

संदेश कतारों का उपयोग एक तरफा और दो-तरफा, एसिंक्रोनस मैसेजिंग दोनों के लिए किया जा सकता है। एक तरफा उपयोग के लिए, मेरा धागा आपके थ्रेड से वापस स्वीकृति के बिना, मेरे थ्रेड में महत्वपूर्ण घटनाओं के मूल्यांकन के लिए अपने धागे को बनाए रखने के लिए इसका उपयोग कर सकता है। दो-तरफा उपयोग के लिए, मेरे थ्रेड के बाद आपके धागे पर एक संदेश भेजता है, आपके थ्रेड को मेरे संदेश कतार के माध्यम से डेटा को मेरे धागे पर वापस भेजने की आवश्यकता हो सकती है।

संदेश कतार परत निम्न स्तर सिंक्रनाइज़ेशन योजनाओं का उपयोग करती है ताकि यह सुनिश्चित किया जा सके कि कतार में कोई भी दो लेखक एक ही समय में लिख नहीं सकते हैं। यह बीमा करता है कि कतार में सभी लिखने परमाणु हैं। यह भी बीमा करता है कि कतार का पाठक कतार से आंशिक रूप से लिखित संदेश नहीं पढ़ सकता है।

अधिकांश संदेश कतार API भी आपके द्वारा निर्दिष्ट फ़िल्टर के आधार पर कतार से संदेशों को पढ़ने के लिए समर्थन प्रदान करते हैं। उदाहरण के लिए कहें कि आप एक महत्वपूर्ण थ्रेड से संदेशों को अन्य संदेशों के लिए अधिक महत्वपूर्ण मानते हैं। जब भी आप संदेशों के लिए अपनी कतार जांचते हैं, तो आप महत्वपूर्ण थ्रेड से संदेशों की जांच कर सकते हैं, और पहले उन संदेशों की सेवा कर सकते हैं। तब आपका धागा शेष संदेशों को सामान्य के रूप में संसाधित करने के लिए आगे बढ़ेगा, बशर्ते महत्वपूर्ण धागे से कोई और संदेश न मिले।

A C tutorial of the UNIX message queues

2

एक जटिल विषय है, लेकिन यह बस डाल करने के लिए है कि:

संदेश कतार सबसे अच्छा तरीकों में से एक सबसे अच्छा कर रहे हैं, अगर नहीं, को वितरण प्रणाली को लागू।

अब आप पूछ सकते हैं, वितरित सिस्टम क्या है? यह एक एकीकृत प्रणाली है जो कई मशीनों, क्लाइंट्स या नोड्स को फैलाती है जो गैर-विघटनकारी तरीके से समानांतर में अपने कार्यों को निष्पादित करती हैं। एक वितरित प्रणाली को एक या अधिक नोड्स विफल होने पर काम करना जारी रखने के लिए पर्याप्त मजबूत होना चाहिए, काम करना बंद करना, अंतराल या रखरखाव के लिए नीचे ले जाया जाना चाहिए।

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

और अंततः आप पूछ सकते हैं, यह सब क्या अच्छा है? यह नोड्स नामक कई चलती भागों के साथ अनुप्रयोगों को कार्यान्वित करने के लिए अच्छा है, जिसके लिए वास्तविक समय की निगरानी और वास्तविक समय प्रतिक्रिया क्षमताओं की आवश्यकता होती है।सारांशित करने के लिए वे प्रदान करते हैं: समांतरता (नोड्स वास्तव में समानांतर में चल सकते हैं), तंग एकीकरण (सभी नोड्स एक ही क्रम में एक ही संदेश देखते हैं), decoupling (नोड्स स्वतंत्र रूप से विकसित हो सकते हैं), विफलता/अनावश्यकता (जब कोई नोड विफल रहता है, कोई दूसरा कर सकता है चलने और राज्य को तत्काल लेने के लिए निर्माण), स्केलेबिलिटी/लोड संतुलन (बस अधिक नोड्स जोड़ें), लोच (नोड्स पूरी तरह से सिस्टम को प्रभावित किए बिना गतिविधि चोटियों के दौरान अंतराल कर सकते हैं) और लचीलापन (नोड्स बिना काम किए काम कर सकते हैं पूरी प्रणाली नीचे)।

this article जांचें जो एक संदेश कतार बुनियादी ढांचे पर विस्तार से चर्चा करता है।

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