Я разрабатываю прототип монитора реального времени для обработки довольно больших объемов (> 30 ГБ / день) потоковых числовых данных. Я хотел бы написать это на Clojure, так как язык, кажется, хорошо подходит для системы типа «наблюдатель + конечный автомат», к которой это, вероятно, приведет.
Два основных кандидата, которых я нашел для фреймворка, — это Lamina и Storm. Есть также Riemann и Pulse, но первый кажется скорее полным решением, чем фреймворком, и я бы не хотел пока приступать к окончательному дизайну; Репозиторий Pulse выглядит немного заброшенным?
Что я хотел бы знать, так это; Для каких типов данных и рабочего потока оптимизированы эти два проекта? Storm кажется более зрелым, но Lamina кажется более компонуемой и «Clojureic» (мой опыт работы с Python, поэтому я склонен оценивать это высоко).
Что я нашел из чтения в Интернете:
Storm, похоже, ориентирован на большие данные (потоки), ядром является прямая Java с Clojure DSL. Похоже, что у него есть готовые обработчики для ряда существующих источников данных.
Lamina — это более легкий компонент многократного использования, который выполняет функции Clojure по кодированию абстракций, а это означает, что его можно повторно использовать в качестве основы для других систем обработки событий а>. Источники данных должны обрабатываться в коде.
Оба имеют полезный набор библиотечных функций агрегации/разделения/вычислений из коробки. Интеграция Lamina Graphviz — приятный штрих.