एनएस सर्विसबस बनाम मासट्रांसिट


85

मैं NServiceBus और MassTransit के बारे में एक पेशेवरों और विपक्ष की सूची से जूझ रहा हूं।

अब मुझे पता है कि यहाँ पहले से ही एक धागा है, लेकिन यह वास्तव में मेरे सवालों का जवाब नहीं देता है।

यहाँ मैंने अभी तक जो पढ़ा है:

  1. NServiceBus, हाँ यह लाइसेंस प्राप्त है और यह मुफ्त में नहीं आता है।
  2. MassTransit, हाँ यह खुला स्रोत है, लेकिन प्रलेखन में कुछ कमी है।

NServiceBus पुराना है, और इसके संदर्भ अधिक हैं। MassTransit के बारे में सामान ढूंढना कठिन है, लेकिन मैं खुले विचारों वाला हूं। हालाँकि मुझे एक ठोस समाधान देना है, और इसलिए मुझे पूछना होगा।

तो कृपया, दोनों ढांचे के साथ अनुभव के साथ कोई। मुझे NServiceBus क्यों चुनना चाहिए? या मुझे मासट्रांसिट क्यों चुनना चाहिए?

क्या यह प्रदर्शन, सुरक्षा, पैमाने या है?

जवाबों:


102

अगर मुझे संक्षेप में प्रस्तुत करना होता, तो मैं यहाँ कहता:

यदि आपको व्यावसायिक सहायता की आवश्यकता है, तो NServiceBus के लिए जाएं। यदि आप समर्थन के साधन के रूप में मंचों का उपयोग करने में सहज हैं, तो MassTransit एक बेहतरीन विकल्प है। डेवलपर्स अब तक हमारे मुद्दों के प्रति बहुत संवेदनशील रहे हैं। यदि आप MassTransit चुनते हैं, तो अब आप MSMQ और RabbitMQ के बीच चयन करेंगे। यदि आपको DTC की आवश्यकता है तो MSMQ के साथ जाएं। यदि आप अधिक सुविधाएँ और बेहतर प्रशासन चाहते हैं, तो RabbitMQ के साथ जाएं।

हमारे प्रोजेक्ट पर, हमने दो कारणों से NServiceBus से MassTransit पर स्विच किया:

  1. मासट्रांसिट मुफ्त है
  2. हम RabbitMQ से प्यार करते हैं

मैंने दोनों चौखटों का इस्तेमाल किया है। मैंने NSTransBus की तुलना में MassTransit का लंबे समय तक उपयोग किया है। यहाँ हाइलाइट हैं जैसा कि मैं उन्हें देखता हूं।

लागत:

  • मासट्रांसिट अपाचे 2.0 लाइसेंस प्राप्त है और वाणिज्यिक उत्पादन के उपयोग के लिए मुफ्त है, जबकि NServiceBus नहीं है।

सहयोग:

  • जैसा कि उदी ने उल्लेख किया है, वाणिज्यिक एनएसवर्बस समर्थन का एक विकल्प है, मैंने मासट्रांसिट के लिए नहीं देखा है।

परिवहन:

  • मासट्रांसिट MSMQ और RabbitMQ का समर्थन करता है
  • NServiceBus केवल MSMQ का समर्थन करता है RabbitMQ NServiceBus 4+ में समर्थित है

RabbitMQ बनाम MSMQ:

  • MSMQ संभावित कई मशीनों (जैसे SQL सर्वर, Windows सेवा) पर कई प्रक्रियाओं को शामिल करने वाले लेनदेन के लिए DTC (वितरित लेनदेन समन्वयक) का समर्थन करता है
  • RabbitMQ में एक उत्कृष्ट प्रशासन इंटरफ़ेस है
  • MSMQ लगभग लंबे समय से है और एक Microsoft उत्पाद है
  • RabbitMQ VMWare द्वारा नया, खुला स्रोत, निःशुल्क और प्रायोजित है
  • MSMQ डिफ़ॉल्ट रूप से अधिकांश विंडोज़ मशीनों पर स्थापित है

उदी दहन और मासट्रांसिट लोग (क्रिस पैटरसन, ड्रू सेलर्स, और ट्रैविस स्मिथ) सभी शानदार लोग हैं।


8
अच्छा जवाब, क्ले। मुझे अगले संस्करण में जोड़ने की अनुमति दें (कुछ हफ़्ते में बाहर आने वाले) NServiceBus ActiveMQ का भी समर्थन करेगा। हम जानबूझकर RabbitMQ के लिए अपने समर्थन में देरी कर रहे हैं, जब तक कि हम DTC की कमी की भरपाई करने के लिए एक मजबूत डी-डुप्लीकेशन कहानी नहीं दे सकते - यह अगले साल के लिए योजनाबद्ध है। मासट्रांसिट यह डी-डुप्लीकेशन नहीं करता है (लेकिन यह उनके रोडमैप पर भी हो सकता है, मुझे नहीं पता)।
उदी दहन

1
सुन कर खुशी हुई। सही-से-अंत लेनदेन की कमी मिशन-महत्वपूर्ण प्रणालियों के लिए एक सौदा-ब्रेकर होगी।
क्ले

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

MassTransit के पास वाणिज्यिक समर्थन नहीं है और न ही हम में से किसी के पास इस समय इसे देने की योजना है। मैं MassTransit समर्थन के लिए मेलिंग सूची का सुझाव दूंगा लेकिन मेरे पास अपने आरएसएस रीडर में MassTransit टैग की गई सामान दिखाने की सुविधा है, इसलिए मैं आमतौर पर SO पर एक या दो दिन में जवाब देता हूं।
ट्रैविस

: मीट्रिक टन के लिए, आप भी एक Gitter बातचीत के लिए जा सकते gitter.im/MassTransit/MassTransit
CrusherJoe

36

NServiceBus के मूल लेखक के रूप में, मैं शायद अपनी खुद की तकनीक के प्रति थोड़ा सा पक्षपाती हूं, लेकिन मैं जितना हो सके इसे संतुलित रखने की कोशिश करूंगा।

परिवहन सहायता

NServiceBus और MassTransit दोनों RabbitMQ और Azure Service Bus का समर्थन करते हैं , लेकिन NServiceBus भी समर्थन करता है:

RabbitMQ के विषय पर

यह तर्क दिया जा सकता है कि NServiceBus के पास RabbitMQ के लिए मजबूत समर्थन है - उदाहरण के लिए, इसकी विलंबित डिलीवरी कार्यक्षमता में जबकि मास ट्रांज़िट में कहा गया है कि उनका "प्लगइन अभी भी प्रायोगिक माना जाता है। यह MassTransit द्वारा समर्थित है, लेकिन हम प्लगइन से अधिक की गारंटी नहीं दे सकते। खुद की गारंटी देता है। ”

हम पूरे पारिस्थितिकी तंत्र के लाभ के लिए .net SDK में योगदान करते हुए , RabbitMQ टीम के साथ मिलकर काम करते हैं ।

जब एज़ुर सर्विस बस की बात आती है

अज़ूर सर्विस बस टीम के साथ हमारे सहयोग का स्तर और भी अधिक है, 70 से अधिक पीआर के साथ उनके .net कोर एसडीके

जब आप NServiceBus का उपयोग करते हैं, तो आप उस ज्ञान की पूरी गहराई से लाभान्वित होते हैं।

टूलींग

यही सबसे बड़ा अंतर है।

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

NServiceBus के आसपास सेवा प्लेटफ़ॉर्म काफी आगे तक जाता है, जिससे आपको ServiceInsight के साथ सभी समापन बिंदुओं पर अनुक्रम आरेख देखने की क्षमता मिलती है :

सेवाइन्साइट के साथ अनुक्रम आरेख

आप अपने सभी समापन बिंदु और संदेशों का तार्किक दृश्य भी प्राप्त कर सकते हैं:

NServiceBus प्रणाली का तार्किक दृष्टिकोण

संक्षेप में, आपको अपने सिस्टम के आर्किटेक्चर के जीवित दस्तावेज मिलते हैं।

प्रबंधन और निगरानी

यह एक और क्षेत्र है जहाँ मासट्रांसिट बहुत अधिक नहीं है। जब आप जिस 3 पार्टी सिस्टम को एकीकृत कर रहे हैं वह अनुपलब्ध हो जाता है और आपके सिस्टम में संदेशों का एक गुच्छा त्रुटि कतार में समाप्त हो जाता है, तो एकमात्र समाधान MassTransit आपके लिए उन संदेशों को मैन्युअल रूप से बाद में RabbitMQ फावड़ा प्लगइन का उपयोग करके स्थानांतरित करना है ।

NServiceBus के आस-पास सेवा प्लेटफ़ॉर्म में उस त्रुटि कतार की निगरानी शामिल है, यह देखने के लिए ग्राफ़िकल टूलिंग कि क्या कारण थे उन त्रुटियों के साथ-साथ उन विफल संदेशों के समूहों को फिर से खेलना और यह देखने की क्षमता कि वे वास्तव में एक सरल वेब ऐप में सभी सफलतापूर्वक संसाधित किए गए थे ServicePulse कहा जाता है ।

ServicePulse के साथ संदेश समूह बनाना विफल

स्वास्थ्य जांच का दृश्य भी है जो समय-समय पर चलाए जाते हैं जो संदेशों के विफल होने से पहले समस्याओं की प्रारंभिक चेतावनी प्रदान कर सकते हैं।

और अंत में, मंच में उपलब्ध प्रदर्शन की निगरानी है:

NServiceBus प्रदर्शन की निगरानी

जब आपको उत्पादन समर्थन की बात आती है तो आपको वास्तव में पूरा पैकेज मिलता है।

दीर्घकालिक समर्थन और पीछे-संगतता

जबकि मास ट्रांज़िट के लोग हमेशा ऐसे किसी व्यक्ति की मदद करने में बहुत अच्छे रहे हैं जिनके पास इस बारे में सवाल हैं, जो कि गटर या उनके Google समूह पर है , मुझे नहीं लगता कि वे पुराने संस्करणों पर बग फिक्स प्रदान करते हैं। जब आपके उत्पादन सिस्टम कुछ वर्षों के लिए आसपास रहे हैं, और आप हर समय सब कुछ उन्नत नहीं कर सकते, तो यह महत्वपूर्ण होने लगता है।

NServiceBus समर्थन के साथ शामिल हैं :

  • प्रत्येक प्रमुख संस्करण के लिए 2+ वर्ष
  • अतिरिक्त 2 साल का विस्तारित समर्थन
  • महत्वपूर्ण मुद्दों पर प्रतिक्रिया समय की गारंटी
  • 24x7 उपलब्धता

परामर्श और प्रशिक्षण

ऑफ़लाइन दृष्टिकोण से, NServiceBus पर दुनिया भर में सार्वजनिक पाठ्यक्रम उपलब्ध हैं और साथ ही कई सलाहकार जिन्हें किसी परियोजना को किकस्टार्ट करने या समस्याओं के मामले में सहायता करने के लिए साइट पर लाया जा सकता है। मैंने कई कंपनियों से सुना है जिन्होंने मासट्रांसिट से NServiceBus पर स्विच करने का फैसला किया क्योंकि वे किसी को साइट पर तब नहीं ले सकते जब उन्हें इसकी आवश्यकता थी।

लाइसेंसिंग

कुछ लोगों को अभी भी NServiceBus के बारे में नहीं पता है कि यह व्यक्तिगत उपयोग और स्टार्टअप के लिए मुफ़्त है

व्यक्तिगत उपयोग और स्टार्टअप के लिए मुफ़्त

जब वाणिज्यिक उपयोग की बात आती है , तो NServiceBus के आसपास के लाइसेंसिंग मॉडल बहुत लचीले होते हैं, क्योंकि ग्राहकों का व्यापक स्पेक्ट्रम इंगित करता है, और प्रबंधन के लिए अच्छी तरह से उचित हो सकता है। बेशक, मासट्रांसिट के साथ, लाइसेंसिंग मुफ्त है।

आशा है कि किसी तरह मदद करता है।


6
मैं आपको गैर-पक्षपाती फैशन में मासट्रांसिट के बारे में क्या कहना है, यह सुनना चाहता हूं। मासट्रांसिट कार्यान्वयन को एक तरह से 'बचाव' करने की कोशिश की जा रही है। मैं वास्तव में nServiceBus को पसंद करता हूं, हालांकि, हम केवल वास्तविक उत्पादन वातावरण में लाइसेंस-लागत के साथ संघर्ष कर रहे हैं, लेकिन केवल हमारे प्लेटफॉर्म में नई सुविधाओं के लिए। अवधारणा कोड का प्रमाण आप कह सकते हैं।
गिलियूम शूर्मन्स

1
अधिक तकनीकी अंतर के बारे में क्या? विश्वसनीयता, समर्पण, बड़े संदेश भेजने आदि के बारे में क्या है? क्या कोई सूची है जो कई मैसेजिंग बूस की तुलना इस तरह से करती है?
स्टीवन

1
जहाँ तक मुझे पता है, @Steven, MassTransit के पास NServiceBus बॉक्स सुविधा में पाया गया डुप्लीकेशन कार्यक्षमता नहीं है। आप जिस तरह की सूची चाहते हैं, उसे प्रदान करने में समस्या यह है कि इनमें से प्रत्येक तकनीक विकसित होती रहती है, जिससे उस प्रकार की कोई भी सूची बासी हो जाएगी।
उदी दहन

@udidahan, आपको शायद अपना नजरिया अपडेट करना चाहिए क्योंकि हम 2021 में बंद हो रहे हैं। मैं जानना चाहता हूं कि क्या एमटी पिछले कुछ वर्षों में अपनी कोर तकनीक को बढ़ाया है और साथ ही NServiceBus
Volkan Güven

जी हाँ, वोल्कान। MassTransit और NServiceBus दोनों समय के साथ विकसित होते रहे हैं।
उदी दहन

8

मैं जानता हूँ कि यह इस प्रश्न पर में झंकार के लिए देर हो चुकी है, लेकिन bingleability की खातिर, मैं उल्लेख करना होगा रिबास (जो मैं के प्राथमिक लेखक होने के लिए होता है)।

रेबस अब लगभग 8 साल का है, और इसका उपयोग चारों ओर पैसे ले जाने और बिजली संयंत्रों को गेट-गो से नियंत्रित करने के लिए किया जाता है।

यह MSMQ, RabbitMQ, Azure Service Bus, Azure Storage Queues, Amazon SQS, आदि जैसी अधिकांश बुनियादी कतारबद्ध प्रणालियों का समर्थन करता है, लेकिन यह MSSQL, PostgreSQL और Oracle जैसे ट्रांसपोर्ट का उपयोग करके अधिक मज़ेदार सामान का भी समर्थन करता है।

प्रलेखन विकी काफी व्यापक है, हालांकि बहुत से लोगों को लगता है, क्योंकि रेबस के एपीआई इतनी आसानी से खोजे जा सकते हैं।

रिबस हमेशा (और हमेशा रहेगा) पूरी तरह से स्वतंत्र है। यह एमआईटी-लाइसेंस प्राप्त है, इसलिए आप मूल रूप से इसके साथ कर सकते हैं कि आप क्या महसूस करते हैं।

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

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


2
रीबस को अंडरटेक किया जाता है। यह .NET पारिस्थितिकी तंत्र में एक सच्चा हल्का रत्न है।
थॉमसडीसी

4

आप हमेशा शटल (FOSS) का उपयोग कर सकते हैं: https://github.com/Shuttle/shuttle-esb :)

प्रलेखन (हमेशा सुधार): http://shuttle.github.io/shuttle-esb/

शटल परियोजना लगभग 2 साल से चल रही है और इसका उपयोग उत्पादन प्रणाली है। यह चुनने की बात होगी कि आपके साथ क्या प्रतिध्वनित होता है।

NServiceBus का एक अच्छा ट्रैक रिकॉर्ड है। मैंने इसे पहले एक प्रोडक्शन सिस्टम (1.9) पर इस्तेमाल किया है, लेकिन तब से नहीं जब से यह कमर्शियल (जिस बिंदु पर मैंने शटल से शुरू किया था)।

मैंने मासट्रांसिट की कोशिश नहीं की है।

मुझे लगता है कि आपके सभी विकल्पों में मूल बातें होंगी (कमांड / ईवेंट / पब-सब)। हालाँकि, NServiceBus में sagas और डेटा बस का सामान होता है, हालाँकि मुझे लगता है कि सर्विस बस के बाहर डेटा को संभालना काफी आसान है जैसे कि आपके समापन बिंदु संदेश संचालकों में। मैं नहीं जानता कि क्या मासट्रांसिट में सागा / डेटा बस है लेकिन शटल निश्चित रूप से नहीं है।

एक और विचार शायद यह है कि आप सेवा बस का उपयोग कैसे करना चाहते हैं। यदि यह किसी उत्पाद का हिस्सा होना है, तो एक व्यावसायिक विकल्प जैसे कि NServiceBus के लिए आपको अपने उत्पाद के उपयोगकर्ताओं के लिए लागत निहितार्थ पर विचार करना होगा और हालांकि यह अभी भी कुछ है जिसे इन-हाउस विकास के लिए विचार करने की आवश्यकता है, यह निश्चित रूप से हो सकता है न्यायसंगत।


6
MassTransit में sagas है: docs.masstransit-project.com/en/latest/overview/saga.html
Clay

1

बस जवाब देने के लिए और अधिक देने के लिए, मैंने व्यावसायिक रूप से दोनों पारिस्थितिकी प्रणालियों के साथ विकसित किया है और वे दोनों अब एमक्यू प्रौद्योगिकियों, और .NET कोर की एक विस्तृत श्रृंखला का समर्थन करते हैं।

मैंने एक नए क्लाउड उत्पाद पर कुछ साल पहले NServicebus का उपयोग किया था, हमें .NET कोर की आवश्यकता थी जो उस समय मास ट्रांजिट का समर्थन नहीं करता था। मुझे कहना है - यह डेवलपर के रूप में उपयोग करने के लिए एक प्यारी बात है, बहुत अच्छा एक लाइनर, महान टूलींग / निगरानी है और प्रलेखन वास्तव में अच्छा है।

समर्थन और लाइसेंस के विभिन्न स्तर उपलब्ध हैं, और एक अवसर पर हमें कुछ मदद की जरूरत थी, यह अच्छी गुणवत्ता थी।


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

हालांकि यह ठीक काम करता है, और एमटी डेवलपर्स अपने ओएसएस के समर्थन में बहुत प्रयास करते हैं - जिस तरह से आप काफी उम्मीद कर सकते हैं।

तो व्यक्तिगत रूप से, मेरा TLDR होगा - NServicebus प्राप्त करें यदि आपकी कंपनी को इसके लिए भुगतान करने के लिए आश्वस्त किया जा सकता है, लेकिन एमटी एक सेवा करने योग्य विकल्प है और सबसे अच्छा आपको मुफ्त में मिल सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.