2012-12-10 35 views
5

का उपयोग कर सीक्यूआरएस मैं पिछले 9 महीनों में एक सीक्यूआरएस प्रोजेक्ट (मेरा पहला) पर काम कर रहा हूं जो भारी सीखने की वक्र है। मैं वर्तमान में अपने लिखने वाले मॉडल में जॉलीवर के उत्कृष्ट इवेंटस्टोर का उपयोग कर रहा हूं और मेरे पढ़ने के मॉडल के लिए पोस्टग्रेस एसक्यूएल का उपयोग कर रहा हूं।रेडिस एमक्यू

मेरे पढ़ने और लिखने वाले डेटाबेस दोनों एक ही मशीन पर हैं जिसका अर्थ है कि जब एक ही सिंक्रोनस कॉल में एक ही सिंक्रोनस कॉल में परिवर्तन किया जाता है तो पढ़ने वाले मॉडल में परिवर्तन किया जाता है।

मैं CQRS तैयार कर रही थी जैसा कि मैंने महसूस किया कि यह जाने के लिए सबसे अच्छा तरीका था के रूप में मैं इस तरह के MassTransit, NServiceBus आदि के रूप में संदेश कतार/सेवा बस चौखटे के साथ कोई अनुभव नहीं था

मैं से ज्यादातर के साथ एक बिंदु पर अब कर रहा हूँ एक संदेश कतार ढांचे को पेश करने के लिए मेरे वास्तुकला जगह में।

आज, मैं रेडिस एमक्यू में आया जो सर्विसस्टैक का हिस्सा है और जैसा कि हम पहले से ही हमारे रेस्ट आधारित HTTP क्लाइंट्स के लिए सर्विसस्टैक का उपयोग कर रहे हैं, ऐसा लगता है कि यह सही तरीका है।

मेरा प्रश्न रेडिस एमक्यू को लागू करने के लिए मुझे क्या पता होना चाहिए (या यदि मुझे कोई गलतफहमी है) समझने के बारे में और अधिक है और क्या रेडिस एमक्यू सही विकल्प है?

अब जो मैं समझता हूं, उससे मैं रेडिस एमक्यू को लिखने और डेटाबेस के बीच एक टिकाऊ कतार के रूप में उपयोग करूंगा। एक बार मेरे इवेंट स्टोर ने रिकॉर्ड किया है कि मेरे डोमेन में कुछ हुआ है तो यह रेडिस एमक्यू को प्रकाशित करेगा। घटनाओं/संदेशों के लिए सुनवाई करने वाली सेवाओं को रेडिस एमक्यू से ईवेंट/संदेश प्राप्त होगा और एक बार जब इसे संसाधित किया जाता है (यानी पढ़ा मॉडल को अपडेट या लिखना), तो इवेंट स्टोर को सूचित करने के लिए एक सूचना/प्रतिक्रिया घटना स्टोर पर वापस जाती है कि श्रोता/ग्राहक द्वारा संदेश प्राप्त और संसाधित किया गया है।

क्या यह ध्वनि सही है?

क्या रेडिस एमक्यू आर्किटेक्चर मुझे सब कुछ दे सकता है जो एनएसबी, रावेनडीबी, मासट्रांसिट आदि ऑफर करता है?

इसके अलावा, मैं विंडोज 2008 और 2003 सर्वर पर तैनात होगा। क्या इन ओएस के लिए रेडिस स्थिर है?

उत्तर

2

अब जो मैं समझता हूं, उससे मैं रेडिस एमक्यू को एक टिकाऊ कतार के रूप में लिखने और पढ़ने के डेटाबेस के बीच उपयोग करता हूं।

हाँ यह सही है।

एक बार मेरी घटना की दुकान दर्ज हो गया है कि कुछ मेरे डोमेन हुआ है तो यह Redis MQ को प्रकाशित करेंगे।

हाँ और यह कई तरीकों से किया जा सकता है। यह या तो लेनदेन के हिस्से के रूप में हो सकता है जो घटना स्टोर में बनी रहती है या आपके पास बैंड प्रक्रिया से बाहर हो सकता है जो लगातार ईवेंट स्टोर से ईवेंट प्रकाशित करता है।

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

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

इसके अलावा Redis MQ वास्तुकला मुझे सब कुछ है कि एन एस बी, RavenDB, MassTransit आदि की पेशकश देना होगा?

मैं Redis MQ चल अनुभव नहीं है, लेकिन मुझे पता है कि Redis पब/उप जो एन एस बी और MassTransit का मूल्य प्रस्ताव में से एक है का समर्थन करता है है (कहने के लिए नंगे हड्डियों MSMQ विपरीत)। पब/उप से परे एमटी और एनएसबी प्रस्ताव sagas हैं और ऐसा लगता है कि कम से कम बॉक्स के बाहर रेडिस एमक्यू उन लोगों का समर्थन नहीं करता है। आपको कभी भी सगा की आवश्यकता नहीं हो सकती है, इसलिए यह स्वचालित रूप से निवारक नहीं होना चाहिए। RavenDB एक संदेश कतार नहीं है, इसलिए यह यहां लागू नहीं होता है।

इसके अलावा, मैं विंडोज 2008 और 2003 सर्वर पर तैनात होगा। क्या इन ओएस के लिए रेडिस स्थिर है?

मैं 2008 R2 पर Redis चलाने है और यह स्थिर कर दिया गया है तो मुझे लगता है जाएगा Redis MQ रूप में अच्छी तरह से स्थिर हो जाएगा।

+0

आपकी सभी मदद के लिए धन्यवाद। मुझे यह तय करना है कि मेरे मामले में कौन सी टिकाऊ संदेश कतार का उपयोग करना है, लेकिन मुझे लगता है कि मुझे कुछ दिन बिताने की ज़रूरत है जो अभी भी सबसे अच्छा है। आप क्या सुझाव देंगे? :) –

+1

मैंने जो उत्पादन में सबसे अधिक उपयोग किया है वह एनएसबी + एमएसएमक्यू है, लेकिन एमटी समान रूप से सक्षम है, हालांकि दस्तावेज़ों में कमी आई है। यह सुनिश्चित करने के लिए एनएसबी के लिए लाइसेंसिंग देखना सुनिश्चित करें कि यह संरेखित है या नहीं। रेडिस एमक्यू दिलचस्प लगता है, लेकिन टिप्पणी नहीं कर सकता। कुल मिलाकर, कुछ अलग-अलग चीजों को आजमाएं ताकि आपको यह समझने में मदद मिल सके कि मैसेजिंग एक बुनियादी ढांचागत चिंता है और शेष ऐप में बहुत ज्यादा नहीं रुकनी चाहिए। – eulerfx

+0

आपके ज्ञान के लिए एक बार फिर धन्यवाद :)। मुझे कुछ विचार है कि एनएसबी क्या पेशकश करता है, मुझे सिर्फ यह देखने की ज़रूरत है कि रेडिस एमक्यू कैसे चीजें करता है (असफल संदेशों को पुनः प्रयास करना, असफल संदेशों को कैसे देखना है या संदेश संदेश को कैसे देखना है, यह देखने के लिए संदेश कतार देखें)। मुझे एनएसबी लाइसेंसिंग को देखने की ज़रूरत है, हमारे पास इस संदेश पर कई मैसेजिंग नहीं चल रही हैं और इसके अलावा, पढ़ने और लिखने वाले डेटाबेस एक ही मशीन पर हैं। –

3

मुझे लगता है कि रेडिस में संदेश कतार के सर्विसस्टैक कार्यान्वयन नौकरी-कतार परिदृश्यों के लिए अधिक उपयुक्त है - यह एक रेडिस सूची के अंत में एक संदेश को धक्का देता है और फिर सुनवाई करने वाले ग्राहकों को सूचित करने के लिए रेडिस पब-सब का उपयोग करता है कि एक संदेश है कतार से खींचने के लिए। कोई भी उपभोक्ता संदेश के लिए प्रतिस्पर्धा करेगा।

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

+1

उत्तर के लिए धन्यवाद। मेरे मामले में, मेरे पास केवल एक ग्राहक है जो मेरा पठन मॉडल है क्योंकि मैं डोमेन मॉडल (लिखना) सुनिश्चित करना चाहता हूं और पढ़ा गया मॉडल सिंक से बाहर नहीं जाता है। इस मामले में, RedisMQ ठीक हो जाएगा? –

+2

हाँ, वर्तमान RedisMQ कार्यान्वयन तब आपकी आवश्यकताओं के लिए एकदम सही है। – DanB

2

आपको गिटहब पर मेरी एक छोटी सी परियोजना में रुचि हो सकती है जो रेडिस का उपयोग करके NServiceBus के लिए एक कतार और दृढ़ता कार्यान्वयन है। https://github.com/mackie1001/NServicebus.Redis

मैं इसे उत्पादन तैयार नहीं कहूंगा और मैं इसे एनएसबी 4 पर बंद करना चाहता हूं और कुछ पूर्ण परीक्षण करना चाहता हूं लेकिन इसका मांस पूरा हो गया है।

+0

जानकारी के लिए धन्यवाद। –