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