NServiceBus проти MassTransit


85

Я борюся зі списком "за" і "проти" щодо NServiceBus та MassTransit.

Тепер я знаю, що тут вже є нитка, але це насправді не відповідає на мої запитання.

Ось те, що я досі читав:

  1. NServiceBus, так, він ліцензований, і не безкоштовно.
  2. MassTransit, так, це відкритий код, але, здається, дещо бракує документації.

NServiceBus старший і має більше посилань. Важко знайти речі про MassTransit, але я відкритий. Однак я повинен доставити тверде рішення, і тому я повинен запитати.

Тож будь ласка, хтось із досвідом роботи з обома фреймворками. Чому я повинен вибрати NServiceBus? АБО Чому я повинен вибрати MassTransit?

Це продуктивність, безпека, масштаб чи?

Відповіді:


102

Якби мені довелося підсумувати, ось що я сказав би:

Якщо вам потрібна комерційна підтримка, зверніться до NServiceBus. Якщо вам зручно користуватися форумами як засобом підтримки, MassTransit - чудовий варіант. До цього часу розробники дуже чуйно реагували на наші проблеми. Якщо ви виберете MassTransit, тепер ви будете обирати між MSMQ і RabbitMQ. Якщо вам потрібен DTC, скористайтеся MSMQ. Якщо ви хочете отримати більше можливостей та покращити адміністрування, скористайтесь RabbitMQ.

У нашому проекті ми перейшли з NServiceBus на MassTransit з двох причин:

  1. MassTransit безкоштовний
  2. Ми любимо RabbitMQ

Я використовував обидва фреймворки. Я використовував MassTransit довше, ніж NServiceBus. Ось основні моменти, якими я їх бачу.

Вартість:

  • MassTransit є ліцензованою версією Apache 2.0 та безкоштовною для комерційного використання, тоді як NServiceBus - ні.

Підтримка:

  • Як згадував Уді, є можливість комерційної підтримки NServiceBus, я цього не бачив для MassTransit.

Транспорт:

  • MassTransit підтримує MSMQ та RabbitMQ
  • NServiceBus підтримує лише MSMQ RabbitMQ підтримується в NServiceBus 4+

RabbitMQ проти MSMQ:

  • Підтримка DTC MSMQ (розподілений координатор транзакцій) для транзакцій, що включають кілька процесів на потенційно декількох машинах (наприклад, сервер SQL, служба Windows)
  • RabbitMQ має чудовий інтерфейс адміністрування
  • MSMQ існує довше і є продуктом Microsoft
  • RabbitMQ є новим, з відкритим кодом, безкоштовним та спонсорованим VMWare
  • MSMQ встановлюється на більшості машин Windows за замовчуванням

Уді Дахан і хлопці MassTransit (Кріс Паттерсон, Дру Селлерс і Тревіс Сміт) - усі чудові люди.


8
Гарна відповідь, Клей. Дозвольте мені додати, що в наступній версії (що виходить через пару тижнів) NServiceBus також підтримуватиме ActiveMQ. Ми навмисно затримуємо нашу підтримку RabbitMQ, поки не зможемо дати надійну історію дедуплікації, щоб компенсувати відсутність DTC - це заплановано на наступний рік. MassTransit не робить цього дедуплікації (але це може бути і на їхній дорожній карті, я не знаю).
Уді Дахан,

1
Чудово чути. Відсутність справжніх наскрізних транзакцій призведе до порушення угод для критично важливих систем.
Клей

Ми створили систему, використовуючи nServiceBus, і нам дуже подобається реагування спільноти, і загалом її досить легко налаштувати. На даний момент ми використовуємо MSMQ, оскільки це є більш загальною основою. Однак, незважаючи на те, що nServiceBus має багато моделей ліцензування, я все ще досить заплутаний щодо того, яку ліцензію я (або наша команда) мав би придбати, щоб узгодити умови використання. Команда налічує близько 5 людей, кожен з них програмуватиме програму проти API, але наразі більше в POC-режимі (так у виробництві :)). MassTransit - наступний огляд. Здається, це досить добре задокументовано.
Гійом Шуерманс

На даний момент MassTransit не має комерційної підтримки, і ніхто з нас не планує її пропонувати. Я б запропонував список розсилки для підтримки MassTransit, але у мене є теги, позначені MassTransit, які відображаються у моєму RSS-читачі, тому я зазвичай відповідаю протягом дня-двох на SO.
Тревіс

Для MT ви також можете перейти до розмови Gitter
CrusherJoe

36

Як оригінальний автор NServiceBus, я, мабуть, трохи упереджений до власної технології, але я намагатимусь тримати це якомога збалансованіше.

Транспортна підтримка

NServiceBus і MassTransit підтримують RabbitMQ і Azure Service Bus , але NServiceBus також підтримує:

На тему RabbitMQ

Можна аргументувати те, що NServiceBus має сильнішу підтримку RabbitMQ - наприклад, у своїй функціональності із затримкою доставки, тоді як Mass Transit заявляє, що їх "плагін все ще вважається експериментальним. Він підтримується MassTransit, але ми не можемо гарантувати нічого, крім плагіна гарантує себе ".

Ми також дуже тісно співпрацюємо з командою RabbitMQ, вносячи внесок у .net SDK на благо всієї екосистеми.

Коли справа стосується службової шини Azure

Рівень співпраці у нас з командою Azure Service Bus ще вище, з більш ніж 70 реципієнтів в їх .net ядра SDK .

Користуючись NServiceBus, ви отримуєте вигоду з усієї глибини цих знань.

Інструментальна обробка

Це найбільша різниця.

Як тільки ви побудували суттєву систему, зрозуміти, як всі різні рухомі частини розмовляють між собою, стає справді важливим. MassTransit не має багато в цій галузі, окрім невеликої інтеграції через діагностичне джерело до сторонніх інструментів, таких як Application Insights або Open Trace.

Платформа обслуговування навколо NServiceBus йде набагато далі, надаючи вам можливість переглядати діаграми послідовностей у всіх кінцевих точках за допомогою ServiceInsight :

Діаграми послідовностей із ServiceInsight

Ви також можете отримати логічний погляд на всі ваші кінцеві точки та повідомлення:

Логічний погляд на систему NServiceBus

По суті, ви отримуєте документацію про архітектуру вашої системи.

Управління та моніторинг

Це ще одна область, де у MassTransit не так багато. Коли стороння система, з якою ви інтегруєтесь, стає недоступною, а купа повідомлень у вашій системі потрапляє в чергу помилок, єдиним рішенням MassTransit є можливість вручну перемістити ці повідомлення назад пізніше за допомогою плагіна RabbitMQ Shovel .

Сервісна платформа навколо NServiceBus включає моніторинг цієї черги помилок, графічний інструментарій для виявлення причин, які спричинили ці помилки, а також можливість повторного відтворення груп тих невдалих повідомлень та переконання, що вони насправді були успішно оброблені в простому веб-додатку. називається ServicePulse .

Помилка групування повідомлень із ServicePulse

Існує також візуалізація перевірок працездатності, які проводяться періодично, що може забезпечити раннє попередження про проблеми до того, як повідомлення почнуть не працювати.

І нарешті, на платформі доступний моніторинг продуктивності :

Моніторинг продуктивності NServiceBus

Ви дійсно отримуєте повний пакет, коли мова йде про виробничу підтримку.

Довготривала підтримка та зворотна сумісність

Хоча люди, які займаються Громадським транспортом, завжди надзвичайно добре допомагали всім, хто має запитання щодо цього в Gitter або їхній групі Google , я не думаю, що вони надають виправлення помилок у старих версіях. Коли ваші виробничі системи існують пару років, і ви не можете просто постійно все модернізувати, це починає бути важливим.

Підтримка NServiceBus включає :

  • 2+ роки для кожної основної версії
  • Додаткові 2 роки розширеної підтримки
  • Гарантований час реагування на критичні питання
  • Доступність цілодобово та без вихідних

Консалтинг та навчання

З точки зору офлайн, по всьому світу на NServiceBus доступні публічні курси, а також багато консультантів, яких можна залучити до місця для запуску проекту або допомоги у випадку проблем. Я чув від кількох компаній, які вирішили перейти з MassTransit на NServiceBus, оскільки вони не могли залучити когось на місці, коли їм це було потрібно.

Ліцензування

Деякі люди досі не знають про NServiceBus, це те, що він БЕЗКОШТОВНИЙ для особистого користування та стартапів .

БЕЗКОШТОВНО для особистого користування та стартапів

Що стосується комерційного використання , моделі ліцензування навколо NServiceBus дуже гнучкі, як свідчить широкий спектр клієнтів, і можуть бути цілком виправданими для керівництва. Звичайно, з MassTransit ліцензування є безкоштовним.

Сподіваюся, це якимось чином допомагає.


6
Я хотів би почути, що ви скажете про MassTransit неупереджено. Намагаючись «захистити» реалізацію MassTransit певним чином. Мені дуже подобається nServiceBus, хоча ми просто боремося з ліцензійною вартістю, намагаючись це зробити в реальному виробничому середовищі, але лише для нещодавно доданих функцій на нашій платформі. Доказ концептуального коду, який ви можете сказати.
Гійом Шуерманс

1
А як щодо більш технічних відмінностей? Що стосується надійності, дедуплікації, надсилання великих повідомлень тощо. Як порівнюють ці фреймворки? Чи існує якийсь список, який би порівняв кілька шин обміну повідомленнями таким чином?
Стівен

1
Наскільки мені відомо, @Steven, MassTransit не має функцій дедуплікації, знайдених у функції NServiceBus Outbox. Частина проблеми із наданням потрібного списку полягає в тому, що кожна з цих технологій продовжує розвиватися, що призведе до того, що будь-який подібний список стане застарілим.
Уді Дахан,

@udidahan, вам, мабуть, слід оновити свою точку зору, оскільки ми закриваємось на 2021 рік. Я хочу знати, чи MT дещо покращив свої основні технології за останні кілька років, а також NServiceBus
Volkan Güven

Так, Волкан. І MassTransit, і NServiceBus продовжували розвиватися з часом.
Уді Дахан,

8

Я знаю, що пізно натякати на це питання, але заради дріб’язковості я повинен згадати Ребуса (головним автором якого я є).

Зараз Ребусу близько 8 років, і він використовувався для переміщення грошей та управління електростанціями з самого початку.

Він підтримує більшість основних систем масового обслуговування, таких як MSMQ, RabbitMQ, службова шина Azure, черги сховищ Azure, Amazon SQS тощо, але також підтримує більш смішні речі, такі як використання MSSQL, PostgreSQL та Oracle як транспорту.

Вікі-документація досить вичерпна, хоча багато людей, здається, проходять, тому що API Rebus так легко знайти.

Ребус завжди був (і буде завжди) абсолютно вільним. Він має ліцензію MIT, тому ви можете в основному робити з ним те, що вам подобається.

Якщо ви стали серйозним користувачем Rebus, і вам потрібна офіційна угода про підтримку та додаткові інструменти, ви можете підписатися на Rebus Pro , який пропонує Rebus FM (компанія, що стоїть за Rebus).

Згаданий вище «додатковий інструмент» наразі є у формі Fleet Manager , який може допомогти у справах. Наприклад, Fleet Manager повністю замінює черги помилок , тому натомість там зберігаються невдалі повідомлення. Це означає, що невдалі повідомлення можна переглядати, керувати ними та повторювати в будь-який час за допомогою декількох клацань у Fleet Manager.


2
Ребус набагато недооцінений. Це справжня легка перлина в екосистемі .NET.
ThomasDC

4

Ви завжди можете скористатися Shuttle (FOSS): https://github.com/Shuttle/shuttle-esb :)

Документація (завжди вдосконалюється): http://shuttle.github.io/shuttle-esb/

Проект човника триває майже 2 роки і використовується у виробничих системах. Це буде питання вибору того, що резонує у вас.

NServiceBus має хороші результати. Я використовував його раніше у виробничій системі (1.9), але не з тих пір, як він став комерційним (момент, з якого я розпочав роботу з Shuttle).

Я не пробував MassTransit.

Думаю, усі ваші параметри матимуть основи (command / event / pub-sub). Однак у NServiceBus є саги та матеріали шини даних, хоча я вважаю, що це досить легко обробляти дані за межами самої сервісної шини, наприклад, у ваших обробниках повідомлень кінцевої точки. Я не знаю, чи має MassTransit саги / шину даних, але Shuttle точно не має.

Іншим фактором є, мабуть, те, як ви збираєтеся використовувати службову шину. Якщо ви хочете стати частиною продукту, тоді для комерційного варіанту, такого як NServiceBus, вам потрібно буде врахувати наслідки витрат для користувачів вашого продукту, і хоча це все ще потрібно враховувати для власної розробки, це, безумовно, може бути виправданий.



1

Щоб дати більш сучасну відповідь, я професійно розвинувся з обома екосистемами, і тепер вони обидва підтримують широкий спектр технологій MQ та .NET Core.

Кілька років тому я використовував NServicebus на новому хмарному продукті, нам знадобився .NET Core, який Mass Transit на той час не підтримував. Я повинен сказати - це чудова річ для використання як розробник, є багато приємних лайнерів, чудові інструменти / моніторинг, і документація дійсно хороша.

Доступні різні рівні підтримки та ліцензії, і одного разу, коли нам потрібна була допомога, це було хорошої якості.


Кілька місяців я користуюся Mass Transit у новій компанії, і вони набагато воліють мати безкоштовну бібліотеку з відкритим кодом. Подорож стала трохи більш хиткою - документації для MT місцями бракує, і багато прикладів / питань застаріло. Існує не зовсім широкий діапазон вдосконалених функцій, але вони можуть вам не знадобитися для їх використання.

Це працює нормально, і розробники MT, здається, докладають багато зусиль для підтримки своїх OSS - далеко за межі того, що ви могли б розумно очікувати.

Тож особисто, мій TLDR був би - отримайте NServicebus, якщо вашу компанію можна переконати заплатити за це, але MT - це справжня альтернатива і найкраще, що ви можете отримати безкоштовно.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.