2013-03-20 5 views
35

Я работаю с Storm, и это нормально для многих случаев использования. Недавно я взглянул на Trident, который представляет собой абстракцию уровня Storm на высоком уровне. Он поддерживает точно-один раз обработки и упрощает обработку с учетом состояния.Storm vs. Trident: Когда не использовать Trident?

Но теперь мне интересно .. Почему я не могу использовать Trident вместо Storm?

То, что я читал до сих пор:

  • Trident обрабатывает сообщения в пакетном режиме, поэтому пропускная время может быть больше.
  • Trident еще не способен обрабатывать циклы в топологиях.

Есть ли другие недостатки при использовании Trident вместо Storm? Потому что сейчас я считаю, что недостатки, перечисленные выше, являются незначительными.

Какие варианты использования не могут быть реализованы с помощью Trident?


Aftermath:

Поскольку я задал этот вопрос моя компания решила пойти на Trident первым. Когда будут проблемы с производительностью, мы будем использовать чистый шторм. К сожалению, это не было активным решением, оно просто стало дефолтным поведением (в то время меня не было).

Их предположение заключалось в том, что в большинстве случаев мы нуждаемся в состоянии или только однократной обработке, или мы будем нуждаться в нем в ближайшем будущем. Я понимаю их аргументацию, потому что переход от Storm к Trident или обратно не является легкой трансформацией, но, по моему личному мнению, концепция обработки потока без состояния не была понята всеми, и это было основной причиной использования Trident.

+1

Я думаю, вы поняли: Trident является то, что работает на вершине Storm и заменяет старую концепцию транзакционных топологий. Конечно, вы можете использовать Trident вместо Core Storm, если хотите. –

+0

Привет, Гордон, я знаю, что Трайдент работает на вершине Шторма. Из-за этого мне интересно, почему я должен Шторм в любом случае. Похоже, что низкоуровневый API Storm необходим только для некоторых редких случаев использования. –

+2

Как я понял, когда у вас есть миллионы событий, время обработки партий не является большим (часть секунд, я полагаю), но загрузка базы данных снижается. Я думаю, что можно реализовать некоторый тайм-аут и иметь дополнительное событие. И да, Trident - это абстракция высокого уровня над штормом, и вы можете и должны использовать storm api для чего-то обычного. – Alex

ответ

39

Чтобы ответить на ваш вопрос: когда вы не должны использовать Trident? Всякий раз, когда вы можете позволить себе этого не делать.

Trident добавляет сложности к топологии Storm, снижает производительность и генерирует состояние. Задайте себе вопрос: нужна ли вам «ровно один раз» семантика обработки Trident или вы можете жить с «хотя бы раз», обрабатывая семантику Storm. Для ровно один раз используйте Trident, иначе нет.

Я также хотел бы подчеркнуть тот факт, что Storm гарантирует, что все сообщения будут обработаны. Некоторые сообщения могут быть обработаны более одного раза.

18

Если самая низкая возможная задержка является вашей целью, и вам не нужна ровно некоторая обработка, то использование Storm лучше, чем Trident.

4

Trident - это абстракция высокого уровня для выполнения вычислений в реальном времени на вершине Twitter Storm, доступная в Storm 0.8.x. Storm - это платформа обработки потоков без состояния и Trident обеспечивает обработку потока с использованием stateful.

+0

Привет, я обновил свой вопрос, чтобы сделать его более понятным: какие варианты использования не могут быть реализованы с Trident? –

+0

Привет, если вам не нужна обработка с сохранением состояния, то использование Trident будет пустой тратой ресурсов (CPU, RAM, ...), поскольку она хранит состояния во внешней базе данных в памяти. –

+1

Если вы не отслеживаете состояние, Trident не будет «компилировать» любые дополнительные накладные расходы. Фактически, Trident «компилятор» имеет тенденцию генерировать более эффективные топологии, чем я мог бы вручную. И это включает в себя действительно оптимизированные, функциональные вспомогательные функции, которые вам не нужно кодировать самостоятельно. – ChrisCantrell

1

Крис, поскольку эти два из них являются технологиями с открытыми исходными кодами, трезубец является единственной реализацией сценария на вершине шторма, конечно, это привело к накладным расходам. Если трезубец не может удовлетворить ваши требования, вы создаете свою собственную государственную реализацию поверх бури. Trident привнесли проекты более высокого уровня, такие как Trident-ML.

+0

Привет, на самом деле Trident отвечает всем моим требованиям, из-за этого я спросил, почему нам все еще нужен простой шторм. –

+1

Тогда мы можем ответить на ваш вопрос: если трезубцы не соответствуют вашим требованиям к производительности, вы можете реализовать свою собственную более эффективную структуру с учетом состояния на вершине шторма – HakkiBuyukcengiz

0

Предположим, мы хотим сделать фильтрацию + добавление поля к кортежу. Если мы используем шторм, мы используем 2 бота для фильтрации, добавление поля. так что снова нам нужно отправить кортеж на новый болт, может быть, используется глобальная группировка. поэтому здесь пропускная способность nw может стать узким местом.

используя трезубц, мы можем использовать сделать выше на одной машине. поэтому в этом случае перегруппировка не требуется. такое использование случае в дополнение к «ровно один раз»/«на восток, как только» могут дифференцироваться, что использовать и т.д.

Trident является своего рода группировка логической группировки

 Смежные вопросы

  • Нет связанных вопросов^_^