Буря против Трайдента: Когда не использовать Трайдент?
Я работаю со 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 выше на одной машине. поэтому в этом случае перегруппировка не требуется. такой вариант использования в дополнение к "точно один раз" /"на востоке один раз" может дифференцировать то, что использовать и т. д.
Трайдент это своего рода группировка логической группировки