NServiceBus ve MassTransit


86

NServiceBus ve MassTransit ile ilgili bir artılar ve eksiler listesiyle mücadele ediyorum.

Şimdi, burada zaten bir konu olduğunu biliyorum, ama sorularıma gerçekten cevap vermiyor.

İşte şimdiye kadar okuduklarım:

  1. NServiceBus, evet lisanslıdır ve ücretsiz gelmez.
  2. MassTransit, evet açık kaynak, ancak belgeler bir şekilde eksik görünüyor.

NServiceBus daha eskidir ve daha fazla referansa sahiptir. MassTransit hakkında bir şeyler bulmak zor, ancak açık fikirliyim. Ancak sağlam bir çözüm sunmalıyım ve bu yüzden sormam gerekiyor.

Bu yüzden lütfen, her iki çerçeve konusunda da tecrübeli biri. Neden NServiceBus'u seçmeliyim? VEYA Neden MassTransit'i seçmeliyim?

Performans mı, güvenlik mi, ölçek mi yoksa?

Yanıtlar:


103

Özetlemek zorunda olsaydım, işte söyleyeceğim şey:

Ticari desteğe ihtiyacınız varsa, NServiceBus'a gidin. Destek aracı olarak forumları kullanmakta rahatsanız, MassTransit harika bir seçenektir. Geliştiriciler şu ana kadar sorunlarımıza çok duyarlı davrandılar. MassTransit'i seçerseniz, şimdi MSMQ ve RabbitMQ arasında seçim yapacaksınız. DTC'ye ihtiyacınız varsa MSMQ ile gidin. Daha fazla özellik ve daha iyi yönetim istiyorsanız, RabbitMQ ile gidin.

Projemizde iki nedenden dolayı NServiceBus'tan MassTransit'e geçtik:

  1. MassTransit ücretsizdir
  2. RabbitMQ'yu seviyoruz

Her iki çerçeveyi de kullandım. MassTransit'i NServiceBus'tan daha uzun süre kullandım. İşte gördüğüm kadarıyla önemli noktalar.

Maliyet:

  • MassTransit, Apache 2.0 lisanslıdır ve ticari üretim kullanımı için ücretsizdir, oysa NServiceBus değildir.

Destek:

  • Udi'nin bahsettiği gibi, ticari NServiceBus desteği için bir seçenek var, bunu MassTransit için görmedim.

Ulaşım:

  • MassTransit, MSMQ ve RabbitMQ'yu destekler
  • NServiceBus yalnızca MSMQ'yu destekler RabbitMQ, NServiceBus 4 + 'da desteklenir

RabbitMQ ve MSMQ:

  • MSMQ, potansiyel olarak birden çok makinede (örneğin SQL sunucusu, Windows Hizmeti) birden çok işlemi içeren işlemler için DTC'yi (dağıtılmış işlem koordinatörü) destekler
  • RabbitMQ mükemmel bir Yönetim arayüzüne sahiptir
  • MSMQ daha uzun süredir var ve bir Microsoft ürünü
  • RabbitMQ daha yeni, açık kaynak, ücretsiz ve VMWare tarafından destekleniyor
  • MSMQ, varsayılan olarak çoğu Windows makinesine yüklenir

Udi Dahan ve MassTransit adamları (Chris Patterson, Dru Sellers ve Travis Smith) mükemmel insanlardır.


8
Güzel cevap Clay. Bunu bir sonraki sürümde eklememe izin verin (birkaç hafta içinde çıkacak) NServiceBus da ActiveMQ'yu destekleyecektir. Önümüzdeki yıl için planlanan DTC eksikliğini telafi etmek için sağlam bir tekilleştirme hikayesi sunana kadar RabbitMQ'ya desteğimizi kasıtlı olarak erteledik. MassTransit bu tekilleştirmeyi yapmaz (ancak yol haritasında da olabilir, bilmiyorum).
Udi Dahan

1
Duymak güzel. Gerçek uçtan uca işlemlerin olmaması, görev açısından kritik sistemler için bir anlaşmayı bozacaktır.
Clay

NServiceBus kullanarak bir sistem kurduk ve topluluğun yanıt verme hızını gerçekten seviyoruz ve genel olarak yapılandırması oldukça kolay. Daha ortak bir zemin olduğu için şimdilik MSMQ kullanıyoruz. Bununla birlikte, nServiceBus birçok lisanslama modeline sahip olsa da, kullanım şartlarına uygun olmak için hangi lisansı (veya ekibimizin) satın alması gerektiği konusunda hala kafam karışık. Ekip yaklaşık 5 kişiden oluşuyor, her biri API'ye karşı programlayacak, ancak şimdilik daha çok POC modunda (üretimde evet :)). MassTransit incelemenin yanında. Oldukça iyi belgelenmiş görünüyor.
Guillaume Schuermans

MassTransit'in şu anda ticari desteği yoktur ve hiçbirimizin bunu sunma planları yoktur. MassTransit desteği için posta listesini öneririm, ancak RSS okuyucumda MassTransit etiketli öğelerim var, bu nedenle normalde SO'da bir veya iki gün içinde yanıt veriyorum.
Travis

MT için bir Gitter sohbetine de gidebilirsiniz: gitter.im/MassTransit/MassTransit
CrusherJoe

39

NServiceBus'un orijinal yazarı olarak, muhtemelen kendi teknolojime karşı biraz önyargılıyım, ancak bunu elimden geldiğince dengeli tutmaya çalışacağım.

Taşıma desteği

Hem NServiceBus hem de MassTransit, RabbitMQ ve Azure Service Bus'u destekler, ancak NServiceBus ayrıca şunları da destekler:

RabbitMQ konusunda

Tartışma NServiceBus'un RabbitMQ için daha güçlü bir desteğe sahip olduğu ileri sürülebilir - örneğin, Mass Transit'in "eklenti hala deneysel olarak kabul edildiğini belirtirken , gecikmiş teslimat işlevselliğinde . MassTransit tarafından destekleniyor, ancak eklentiden daha fazlasını garanti edemeyiz kendini garanti eder. "

Ayrıca tüm ekosistemin yararına .net SDK'ya katkıda bulunan RabbitMQ ekibiyle çok yakın çalışıyoruz .

Azure Service Bus söz konusu olduğunda

Azure Service Bus ekibiyle yaptığımız işbirliği seviyesi, .net çekirdek SDK'larına yönelik 70'ten fazla PR ile daha da yüksek .

NServiceBus'u kullandığınızda, bu bilginin tüm derinliğinden faydalanırsınız.

Takımlama

Bu en büyük fark.

Önemli bir sistem kurduğunuzda, tüm farklı hareketli parçaların birbiriyle nasıl konuştuğunu görebilmek gerçekten önemli hale gelir. MassTransit, Teşhis Kaynağı aracılığıyla Application Insights veya Open Trace gibi 3. taraf araçlara küçük bir entegrasyonun ötesinde bu alanda pek bir şeye sahip değildir .

NServiceBus etrafındaki Servis Platformu biraz daha ileri gider ve size ServiceInsight ile tüm uç noktalardaki sıra diyagramlarını görme olanağı verir :

ServiceInsight ile sıra diyagramları

Ayrıca tüm uç noktalarınızın ve mesajlarınızın mantıksal görünümünü de alabilirsiniz:

NServiceBus sisteminin mantıksal görünümü

Temelde, sisteminizin mimarisinin canlı belgelerini alırsınız.

Yönetim ve İzleme

Bu, MassTransit'in çok fazla sahip olmadığı başka bir alandır. Entegre ettiğiniz bir 3. parti sistem kullanılamaz hale geldiğinde ve sisteminizdeki bir grup mesaj hata kuyruğuna girdiğinde, MassTransit'in bu mesajları daha sonra RabbitMQ Shovel eklentisini kullanarak manuel olarak geri taşımanız için sahip olduğu tek çözüm .

NServiceBus etrafındaki Hizmet Platformu, bu hata kuyruğunun izlenmesini, bu hataların nedenlerinin neler olduğunu görmek için grafik araçların yanı sıra bu başarısız mesaj gruplarını yeniden oynatma ve bunların aslında basit bir web uygulamasında başarıyla işlendiklerini görme becerisini içerir. ServicePulse denir .

ServicePulse ile başarısız mesaj gruplaması

Ayrıca, mesajlar başarısız olmaya başlamadan önce sorunlara ilişkin erken uyarılar sağlayabilen periyodik olarak çalıştırılan sağlık kontrollerinin görselleştirilmesi de vardır.

Ve son olarak, platformda mevcut performans izleme var:

NServiceBus performans izleme

Üretim desteği söz konusu olduğunda tam paketi gerçekten alırsınız.

Uzun vadeli destek ve Geriye dönük uyumluluk

Toplu Taşıma çalışanları, Gitter veya Google Gruplarında bu konu hakkında soruları olan herkese yardım etmekte her zaman son derece başarılı olsalar da, eski sürümlerde hata düzeltmeleri sağladıklarını sanmıyorum. Üretim sistemleriniz birkaç yıldır ortalıktayken ve her şeyi her zaman yükseltemezseniz, bu önemli olmaya başlar.

NServiceBus desteği şunları içerir :

  • Her ana sürüm için 2+ yıl
  • Ek 2 yıl uzatılmış destek
  • Kritik konularda garantili yanıt süreleri
  • 24x7 kullanılabilirlik

Danışmanlık ve Eğitim

Çevrimdışı bir bakış açısıyla, NServiceBus'ta dünya çapında halka açık kursların yanı sıra bir projeyi başlatmak veya sorun olması durumunda yardımcı olmak için sahaya getirilebilecek birçok danışman bulunmaktadır. MassTransit'ten NServiceBus'a geçmeye karar veren birkaç şirketten duydum çünkü ihtiyaç duyduklarında sahada birini bulamadılar.

Lisanslama

Bazı insanların NServiceBus hakkında hala bilmediği şey, kişisel kullanım ve girişimler için ÜCRETSİZ olmasıdır .

Kişisel kullanım ve başlangıçlar için ÜCRETSİZ

Ticari kullanım söz konusu olduğunda , NServiceBus etrafındaki lisanslama modelleri, geniş müşteri yelpazesinin belirttiği gibi çok esnektir ve yönetime haklı gösterilebilir. Tabii ki MassTransit ile lisanslama ücretsizdir.

Umarım bu bir şekilde yardımcı olur.


6
Tarafsız bir şekilde MassTransit hakkında söyleyeceklerinizi duymak isterim. MassTransit uygulamasını bir şekilde 'savunmaya' çalışmak. NServiceBus'ı gerçekten seviyorum, ancak bunu gerçek bir üretim ortamında denerken lisans maliyetiyle mücadele ediyoruz, ancak yalnızca platformumuza yeni eklenen özellikler için. Söyleyebileceğiniz kavram kodunun kanıtı.
Guillaume Schuermans

1
Daha teknik farklılıklar ne olacak? Peki ya güvenilirlik, tekilleştirme, büyük mesajlar gönderme vb. Bu çerçeveler / oyun biçimleri nasıl karşılaştırılır? Birkaç mesajlaşma veri yolunu bu şekilde karşılaştıran herhangi bir liste var mı?
Steven

1
Bildiğim kadarıyla @Steven, MassTransit NServiceBus Giden Kutusu özelliğinde bulunan tekilleştirme işlevine sahip değil. İstediğiniz türden bir listeyi sağlamakla ilgili sorunun bir kısmı, bu teknolojilerin her birinin gelişmeye devam etmesidir, bu da bu türden herhangi bir listenin eskimesine neden olur.
Udi Dahan

@udidahan, 2021'e yaklaşırken görüşünüzü muhtemelen güncellemelisiniz. Son birkaç yılda MT'nin çekirdek teknolojisinin yanı sıra NServiceBus
Volkan Güven

Evet Volkan. Hem MassTransit hem de NServiceBus zaman içinde gelişmeye devam etti.
Udi Dahan

8

Ben bu soruya içinde çan geç olduğunu biliyorum ama bingleability aşkına, ben söz var Rebus (I birincil yazarı olmak olur ki).

Rebus şu anda yaklaşık 8 yaşında ve parayı hareket ettirmek ve enerji santrallerini hareket halindeyken kontrol etmek için kullanılıyor.

MSMQ, RabbitMQ, Azure Service Bus, Azure Storage Queues, Amazon SQS vb. Gibi çoğu temel kuyruk sistemini destekler, ancak MSSQL, PostgreSQL ve Oracle'ı aktarım olarak kullanmak gibi daha eğlenceli şeyleri de destekler.

Dokümantasyon wiki'si oldukça kapsamlıdır, ancak pek çok kişi idare ediyor gibi görünse de, çünkü Rebus'un API'leri çok kolay keşfedilebilir.

Rebus her zaman tamamen ücretsiz olmuştur (ve her zaman olacaktır). MIT lisanslıdır, yani temelde onunla istediğinizi yapabilirsiniz.

Ciddi bir Rebus kullanıcısı olursanız ve resmi bir destek anlaşmasına ve ekstra aletlere ihtiyacınız varsa, Rebus FM (Rebus'un arkasındaki şirket) tarafından sunulan Rebus Pro'ya abone olabilirsiniz .

Yukarıda bahsedilen "ekstra araçlar" şu anda , bazı konularda yardımcı olabilecek Filo Yöneticisi biçiminde geliyor . Örneğin, Fleet Manager hata kuyruklarını tamamen değiştirir , bu nedenle başarısız mesajlar orada saklanır. Bu, başarısız mesajların Fleet Manager'da birkaç tıklama ile herhangi bir zamanda görüntülenebileceği, yönetilebileceği ve yeniden denenebileceği anlamına gelir.


2
Rebus çok azdır. .NET ekosisteminde gerçekten hafif bir mücevher.
ThomasDC

4

Her zaman Shuttle (FOSS) kullanabilirsiniz: https://github.com/Shuttle/shuttle-esb :)

Belgeler (her zaman gelişir): http://shuttle.github.io/shuttle-esb/

Mekik projesi yaklaşık 2 yıldır devam ediyor ve üretim sistemlerinde kullanılıyor. Sizin için neyin yankılanacağını seçme meselesi olacak.

NServiceBus iyi bir geçmiş performansa sahiptir. Daha önce bir üretim sisteminde (1.9) kullandım, ancak ticari hale geldiğinden beri (Shuttle ile başladığım nokta).

MassTransit'i denemedim.

Sanırım tüm seçenekleriniz temellere sahip olacak (command / event / pub-sub). Bununla birlikte, NServiceBus'un sagaları ve veri yolu unsurları var, ancak son nokta mesaj işleyicileriniz gibi servis veriyolunun dışındaki verileri işlemenin yeterince kolay olduğunu düşünüyorum. MassTransit'in sagas / veri yolu olup olmadığını bilmiyorum ama Shuttle'ın kesinlikle yok.

Dikkate alınacak başka bir konu da muhtemelen servis otobüsünü nasıl kullanmayı planladığınızdır. Bir ürünün parçası olacaksa, NServiceBus gibi ticari bir seçenek için, ürününüzün kullanıcıları için maliyet sonuçlarını göz önünde bulundurmanız gerekir ve yine de şirket içi geliştirme için dikkate alınması gereken bir şey olsa da, kesinlikle haklı.



2

Daha güncel bir cevap vermek için, her iki ekosistemle de profesyonel olarak geliştirdim ve şimdi ikisi de çok çeşitli MQ teknolojilerini ve .NET Core'u destekliyor.

NServicebus'u birkaç yıl önce yeni bir bulut ürününde kullandım, Mass Transit'in o sırada desteklemediği .NET Core'a ihtiyacımız vardı. Söylemek zorundayım - geliştirici olarak kullanmak güzel bir şey, bir sürü güzel gömlek var, harika araçlar / izleme ve dokümantasyon gerçekten çok iyi.

Çeşitli seviyelerde destek ve lisans mevcuttur ve bir seferinde biraz yardıma ihtiyacımız vardı, kaliteli idi.


Yeni bir şirkette birkaç aydır Toplu Taşıma kullanıyorum ve onlar daha çok ücretsiz, açık kaynaklı bir kitaplığa sahip olmayı tercih ediyorlar. Yolculuk biraz daha zorlu geçti - MT için dokümantasyon bazı yerlerde eksik ve birçok örnek / konu güncel değil. Çok çeşitli gelişmiş özellikler de yoktur, ancak kullanım durumları için bunlara ihtiyacınız olmayabilir.

Yine de iyi çalışıyor ve MT geliştiricileri OSS'lerini desteklemek için ÇOK çaba sarf ediyor gibi görünüyor - makul olarak bekleyebileceğinizin çok ötesinde.

Bu yüzden şahsen benim TLDR'm şöyle olurdu - eğer şirketiniz bunun için ödeme yapmaya ikna edilebilirse NServicebus'u alın, ancak MT hizmete açık bir alternatiftir ve ücretsiz olarak alabileceğiniz en iyisidir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.