Ответ 1
Благодарим вас за интерес к модели программирования Dataflow! Это правда, что как поток данных, так и Apache Storm поддерживают обработку потока, но есть важные отличия:
-
Dataflow поддерживает как пакетное, так и потоковое вычисление под одним и тем же API-интерфейсом окон, в то время как Storm, насколько мне известно, представляет собой поточную систему.
-
API для определения топологии вычислений сильно отличается в Dataflow и Storm. API потока данных в основном имитирует FlumeJava: вы управляете логическими объектами PCollection (параллельные коллекции, вы можете считать их логическими наборы данных), подобно тому, как вы будете манипулировать реальными коллекциями и создавать новые коллекции из результатов применения различных параллелизуемых операций (например, ParDo) в другие коллекции. Напротив, в Apache Storm вы строите сеть вычислений непосредственно из "носиков" и "болтов"; нет явного представления о логическом наборе данных или о параллельной операции, о которой я знаю.
-
Логическое представление конвейера в Dataflow позволяет фреймворку выполнять оптимизации, аналогичные тем, которые выполняются оптимизаторами запросов в системах баз данных, например. избегать или вводить материализацию определенных промежуточных результатов, перемещаться или исключать операции "по одному" и т.д. Вы можете увидеть обзор этих оптимизаций в документе FlumeJava. Это полезно как в пакетном режиме, так и в потоковом режиме.
-
Гарантии согласованности между моделью потоковой передачи данных и потоками Storm различны. Это на самом деле увлекательная тема! Я предлагаю прочитать документ Millwheel (на котором основана потоковая часть Dataflow) для обзора проблем отказоустойчивости и согласованности в потоковая система. Я считаю, что в документе кратко сравнивается Millwheel со Storm. Вы можете найти более широкое обсуждение важности гарантий согласованности в потоковых системах и силе согласованности, заданной Dataflow, в разговоре Have Your Cake and Eat Это слишком - Дальнейшее распространение мифов лямбда-архитектуры.
-
Одно из основных предложений стоимости Dataflow как части Облачной платформы Google - ноль: вам не нужно настраивать кластер, настраивать систему мониторинга и т.д.: вы просто отправляете свои конвейер в облачный API и система выделяет ресурсы для него, выполняет ваш конвейер, используя их, контролирует его для вас. Это, возможно, не связано с вашим вопросом о сходстве модели программирования.