ऐसा लगता है जैसे कि समस्याओं को आप अनुभव किया है मैसेजिंग के लिए निहित नहीं हैं, बल्कि खराब कार्यान्वित संदेश प्रणाली की कलाकृतियों हैं। क्या डाटाबेस सिस्टम बनाने से हार्ड मैसेजिंग सिस्टम बनाना कठिन है? हां, अगर आप कभी भी डेटाबेस सिस्टम बनाते हैं।
- बेजोड़ अपवादों को संदेश खोना? यह संदेश कतार की शायद ही गलती है। आपके द्वारा उपयोग किए जा रहे एप्लिकेशन खराब इंजीनियर हैं। प्रसंस्करण पूर्ण होने से पहले वे कतार से संदेशों को हटा रहे हैं। वे लेनदेन, या जर्नलिंग का उपयोग नहीं कर रहे हैं।
- संदेश कतार भरें जबकि डीबी स्टोरेज "वर्चुअल अनंत" है? आप बात करते हैं जैसे डिस्क स्पेस प्रबंधित करना कुछ ऐसा था जो डेटाबेस की आवश्यकता नहीं थी। संदेश कतार सर्वरों को डेटाबेस सर्वर की तरह प्रशासन की आवश्यकता होती है।
- एक कतार से पढ़ने के लिए गूढ़ उपकरण? हो सकता है कि आप एसिंक्रोनस विधियों को गूढ़ पाते हैं। हो सकता है कि अगर आपको क्रमबद्धता और deserialization गूढ़ लगता है। (कम से कम, वे चीजें हैं जिन्हें मैंने मैसेजिंग सीखते समय गूढ़ पाया। कई प्रतीत होता है-गूढ़ प्रौद्योगिकियों की तरह, वे वास्तव में काफी समझदार होते हैं जब आप उन्हें समझते हैं, और उन्हें समझना अनुभवी डेवलपर की शिक्षा का एक महत्वपूर्ण हिस्सा है।)
कि यह डेटाबेस के लिए बेहतर संदेश के
पहलुओं:
- अतुल्यकालिक प्रसंस्करण। संदेश कतार प्रतीक्षा संदेश को सूचित करते हैं जब नए संदेश आते हैं। डेटाबेस में इस कार्यक्षमता को पूरा करने के लिए, प्रतीक्षा प्रक्रियाओं को डेटाबेस को मतदान करना होता है।
- चिंताओं का पृथक्करण। संचार चैनल संदेश सामग्री के कार्यान्वयन विवरण से decoupled है। केवल प्रेषक और रिसीवर को किसी दिए गए संदेश में डेटा स्ट्रीम के प्रारूप के बारे में कुछ भी जानने की आवश्यकता होती है।
- दोष-सहिष्णुता।। मैसेजिंग काम कर सकती है जब सर्वर के बीच कनेक्शन intermittent हैं। संदेश कतार स्थानीय रूप से संदेशों को संग्रहीत कर सकती है और कनेक्शन लाइव होने पर उन्हें दूरस्थ सर्वर पर अग्रेषित कर सकती है।
- सिस्टम एकीकरण। विंडोज़ दुनिया में, कम से कम, मैसेजिंग ऑपरेटिंग सिस्टम में बनाया गया है। यह ओएस के सुरक्षा मॉडल का उपयोग करता है, यह ओएस के उपकरण, आदि के माध्यम से प्रबंधित किया जाता है।
यदि आपको इन चीजों की आवश्यकता नहीं है, तो आपको शायद संदेश की आवश्यकता नहीं है।
संदेश के लिए आवेदन का एक सरल उदाहरण यहां दिया गया है: मैं अभी एक सिस्टम बना रहा हूं जहां कई नेटवर्कों में वितरित उपयोगकर्ता, लेनदेन के काफी जटिल सेट दर्ज कर रहे हैं जिनका उपयोग मुद्रित आउटपुट के उत्पादन के लिए किया जाता है। आउटपुट पीढ़ी कम्प्यूटेशनल रूप से महंगा है और उनके वर्कफ़्लो का हिस्सा नहीं है; यानी जब उपयोगकर्ता उत्पन्न होता है तो उपयोगकर्ता परवाह नहीं होता है, बस यह करता है।
इसलिए हम लेनदेन को एक संदेश में क्रमबद्ध करते हैं और इसे कतार में छोड़ देते हैं। सर्वर पर चलने वाली प्रक्रिया कतार से संदेशों को पकड़ती है, आउटपुट उत्पन्न करती है, और आउटपुट को इमेजिंग सिस्टम में संग्रहीत करती है।
अगर हम अपने संदेश स्टोर के रूप में डेटाबेस का उपयोग करते हैं, तो हमें एक लेनदेन प्रारूप को स्टोर करने के लिए एक स्कीमा के साथ आना होगा जो अभी केवल प्रेषक और रिसीवर की देखभाल के बारे में है, हमें यह सुनिश्चित करना होगा कि प्रत्येक वर्कस्टेशन पर नेटवर्क डेटाबेस सर्वर के लिए स्थायी निरंतर कनेक्शन था, हमारे पास इस लेनदेन लोड को कई सर्वरों में वितरित करने की कोई क्षमता नहीं होगी, और हमारे आउटपुट सर्वर को दिन में हजारों बार डेटाबेस से पूछना होगा कि क्या यह देखने के लिए कि क्या नई नौकरियां हैं प्रक्रिया।
स्रोत
2008-11-01 21:03:02
यह उत्तर हर बार उत्तर के किसी अन्य रूप को धड़कता है। – CatShoes