2010-03-15 11 views
8

मुझे विभिन्न ऑपरेटिंग सिस्टम के साथ विभिन्न मशीनों पर चल रहे कई उपभोक्ताओं/उत्पादकों के साथ अपने सिस्टम को समन्वयित करने के लिए कुछ का उपयोग करने की आवश्यकता है। मैं ऐसा करने के लिए MySQL का उपयोग करने पर शोध कर रहा हूं, लेकिन यह हास्यास्पद रूप से मुश्किल लगता है।डेटाबेस (MySQL) का उपयोग कर निर्माता/उपभोक्ता प्रणाली, क्या यह संभव है?

मेरी आवश्यकताएं सरल हैं: मैं किसी भी समय उपभोक्ताओं/उत्पादकों को जोड़ने या निकालने में सक्षम होना चाहता हूं और इस प्रकार उन्हें एक-दूसरे पर निर्भर नहीं होना चाहिए। स्वाभाविक रूप से एक डेटाबेस दो अच्छी तरह से अलग करेगा।

मैं MySQL के लिए Q4M संदेश क्यूइंग प्लगइन देख रहा हूं लेकिन यह उपयोग करने के लिए जटिल लगता है।

मुझे वास्तव में मेरे सिस्टम को सर्वोत्तम तरीके से बनाने के तरीके पर कुछ इनपुट चाहिए।

+0

क्या आप आर्किटेक्चर के बारे में पूछ रहे हैं? संदेश पंक्ति मानक समाधान हैं। क्या आप Q4M के निर्माण की अपनी तकनीकी समस्याओं के बारे में पूछ रहे हैं? कृपया अपने प्रश्न को सामान्य रूप से आर्किटेक्चर या विशेष रूप से क्यू 4 एम पर केंद्रित करें। दोनों का जवाब देना मुश्किल है। –

+0

यह सवाल वास्तुकला के बारे में है। मैं Q4M संकलन पर एक और विशिष्ट पोस्ट करूंगा। – johnrl

+0

यदि आप वास्तव में आर्किटेक्चर के बारे में पूछ रहे हैं, तो क्या आप आर्किटेक्चर पर ध्यान केंद्रित करने के लिए अपना प्रश्न संपादित कर सकते हैं? Q4M समस्या का व्याकुलता लोगों को आपके प्रश्न को समझने और समझदार सहायता प्रदान करने में मुश्किल बनाता है। कृपया विचलित सामग्री को हटाएं और अपने प्रश्न पर ध्यान केंद्रित करें। –

उत्तर

5

मैं कई उपभोक्ताओं/उत्पादकों प्रत्येक अलग ऑपरेटिंग सिस्टम

एक संदेश कतार है कि साथ विभिन्न मशीनों पर चल रहा है के साथ मेरी समन्वय प्रणाली के लिए कुछ प्रयोग करना होगा। अन्य विकल्पों का पीछा मत करो। बाकी सब कुछ (यानी, सम्मिलित और हटाए गए डेटाबेस का उपयोग करके) डरावना धीमा और बोझिल है।

डेटाबेस के साथ एक बड़ी, धीमी संदेश कतार बनाना अक्सर अभ्यास में बुरी तरह से बाहर निकलता है क्योंकि (1) डेटाबेस धीमे होते हैं, (2) डेटाबेस विशाल और जटिल होते हैं, (3) आपके पास प्रत्येक लेनदेन करने वाले लॉकिंग और विवाद समस्याएं होती हैं संभावित रूप से धीमी, (4) यह समस्या के मुकाबले बहुत अधिक है।

कई संदेश कतार समाधान हैं।

यदि आप Q4M काम नहीं कर सकते हैं, तो आपको दूसरे पर जाना चाहिए।

http://en.wikipedia.org/wiki/Message_queue

http://linux.die.net/man/7/mq_overview

http://qpid.apache.org/

http://code.google.com/p/httpsqs/

+0

मैं देखता हूं। लिंक के लिए धन्यवाद। मुझे लगता है कि मैं एक संदेश कतार समाधान का उपयोग करेंगे। एमएसएमक्यू एक अच्छा समाधान (.NET के लिए) की तरह लगता है। – johnrl

1

मुझे लगता है कि यह तीसरे पक्ष के सॉफ्टवेयर के बिना व्यवहार्य है।

मेरी पहली डिजाइन इस प्रकार दिखाई देगा:

  • निर्माता डेटाबेस में डेटा लिखता है
  • स्थिरता यह लेन-देन का उपयोग करना पड़ता है गारंटी देने के लिए
  • उपभोक्ता प्रक्रिया डेटा (पढ़ सकते हैं और हटाना) भी लेनदेन का उपयोग कर।
लेनदेन आवश्यकता InnoDB की वजह से

भंडारण इंजन के तार्किक विकल्प है। इसके अलावा आपको अलगाव स्तर को ध्यान से चुनना होगा। मेरा पहला अनुमान प्रेत से बचने के लिए "धारावाहिक" है, लेकिन शायद कमजोर स्तर भी संभव है।

यदि प्रदर्शन और मापनीयता एक समस्या है, तो आपको "वास्तविक" संदेश समाधान का उपयोग करने पर विचार करना चाहिए। आपके एक को रोल करने से अधिकतर प्रदर्शन और/या स्केलेबिलिटी समस्याएं हो सकती हैं।

2

यह वास्तव में (काफी) ऐसी प्रणाली का निर्माण करने के जटिल है। (मैं काफी कहता हूं, क्योंकि यह निश्चित रूप से करने योग्य है)।

यदि आपके पास एकाधिक निर्माता और एक उपभोक्ता है, तो यह आसान है। सभी निर्माता एक साथ लिखते हैं, और एक ही उपभोक्ता डेटा जैसे ही वे दिखाई देते हैं (प्रतिबद्ध) पढ़ते हैं।

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

मैं निर्मित एक समाधान का उपयोग करने का सुझाव देते हैं। आप एक समान प्रश्न के बारे में this question भी पढ़ सकते हैं।

0

यह स्थितियों पर निर्भर करता है।

मेरे मामले में, केवल एक निर्माता प्रतिदिन हजारों संदेश बनाता है, और कई उपभोक्ता इन संदेशों को निम्नलिखित 24 घंटों में उपभोग करते हैं, जिनमें से प्रत्येक को समाप्त करने के लिए कई मिनीट लेते हैं। इसलिए, मुझे लगता है कि MySQL मेरी आवश्यकता को पूरा करेगा, और मैं उपभोक्ताओं के बीच स्थिरता सुनिश्चित करने के लिए लेनदेन का उपयोग कर सकता हूं।

आशा है कि इससे मदद मिलेगी।

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

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