Вводная часть (со ссылками на все статьи)
Основным компонентом системы, который обрабатывает сырые данные с «пауков», выполняет обогащение данных, их индексацию и последующий поиск является система обработки сообщений, т.к. только подобные системы могут адекватно реагировать на пиковые нагрузки входных данных, недостачу некоторых видов ресурсов и могут быть легко горизонтально масштабируемы.
Когда анализировалось будущее использование системы, обрабатывающей запросы или входящие данные, были выделены следующие требования:
В качестве итогового решения был выбран фреймворк Apache Storm. Для поклонников Apache Spark: с учётом широкой распространённости этого фреймворка (с использованием Spark Streaming или сейчас Spark Structured Streaming), всё дальнейшее повествование будет строиться в сравнении с функционалом Apache Spark.
Основным компонентом системы, который обрабатывает сырые данные с «пауков», выполняет обогащение данных, их индексацию и последующий поиск является система обработки сообщений, т.к. только подобные системы могут адекватно реагировать на пиковые нагрузки входных данных, недостачу некоторых видов ресурсов и могут быть легко горизонтально масштабируемы.
Когда анализировалось будущее использование системы, обрабатывающей запросы или входящие данные, были выделены следующие требования:
- Низкая задержка (latency) обработки сообщения;
- Возможность получения данных из разных источников (БД, message middleware);
- Возможность обработки данных на нескольких узлах;
- Отказоустойчивость к ситуациям выхода из строя узлов;
- Поддержка уровня гарантированной обработки сообщения «at-least-once»;
- Наличие интерфейса для мониторинга состояния кластера и для управления им (хотя бы частично).
В качестве итогового решения был выбран фреймворк Apache Storm. Для поклонников Apache Spark: с учётом широкой распространённости этого фреймворка (с использованием Spark Streaming или сейчас Spark Structured Streaming), всё дальнейшее повествование будет строиться в сравнении с функционалом Apache Spark.