Apache Ignite и Apache Storm - это две довольно разные технологии во многих аспектах, особенно потому, что у Storm есть один очень специфический вариант использования, а у Ignite есть довольно большой набор инструментов под одной крышей. Насколько я понимаю, ядро Ignite - это хранилище в оперативной памяти. На этом построены вычисления, чувствительные к локализации данных. На этом построены всевозможные крутые «игрушки». То, что меня интересует, - это функциональность потоковой передачи, которая, по сути, представляет собой прослушиватель запросов на изменяющийся кеш в памяти.
Если я установил скользящее окно на один кортеж, Ignite предоставит, как и Storm, функциональность по одному кортежу за раз. Данные хранятся в памяти Ignite. Storm не «хранит» данные в памяти, но кортежи, конечно, также хранятся в памяти. Итак, в обоих случаях у меня есть потоковая передача, и у меня есть данные в памяти, и я могу распределять свои вычисления.
У меня возникло ощущение, что писать программы, выполняющие множество этапов преобразования данных, в Storm было бы проще из-за абстракции обеих технологий. Что об этом сказать?
Второй вопрос: как насчет производительности? Я предполагаю, что расположение данных Ignite может дать ему преимущество. С другой стороны, я думаю, что в Storm было бы лучше распределить несколько шагов (разные болты на всех типах машин), в то время как программу Ignite не так легко разделить.
Если бы я все еще хотел распределить поток (не только по данным, но и по шагам на разных машинах). Думаю, мне придется написать несколько стримеров Ignite, которые общаются через кеши, верно? Это звучало бы сложнее для написания, чем в Storm (возвращая нас к первому вопросу).