Буря против Трайдента: Когда не использовать Трайдент?

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

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

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

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

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

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


Последствие:

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

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

5 ответов

Решение

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

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

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

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

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

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

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

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

Трайдент это своего рода группировка логической группировки

Другие вопросы по тегам