Streaming
Материал из Xgu.ru
Потоковые данные (англ. streaming data) —
Примеры источников потоковых данных:
- мониторинг технологических процессов;
- веб-аналитика;
- онлайн-реклама;
- социальные сети;
- данные мобильных устройств и Internet-of-Things;
Принципиальные отличия потоковых данных от обычных:
- новые данные поступают всё время;
- данные, как правило, слабо структурированы;
- данные, как правило, имеют высокую кардинальность.
Особенности архитектуры реального времени:
- высокая доступность (high availability);
- низкие задержки (low latency);
- горизонтальная масштабируемость (horizontal scalability).
Языки, использующиеся, для разработки программ обработки данных реального времени:
- Java;
- Scala;
- Clojure;
- JavaScript;
- Go.
О чём нужно думать в первую очередь при разработке систем с архитектурой реального времени:
- сбор данных;
- течение данных;
- обработка данных;
- хранение данных;
- доставка пользователю.
Содержание |
[править] Течение данных
Течение данных (data flow) —
Программы, использующиеся в настоящее время для организации течения данных:
- Kafka (хорошо подходит, если всё разрабатывается с нуля);
- Flume (прекрасно подходит для legacy-инсталляций).
[править] Обработка данных
Обработка потоковых данных (data processing) —
Программы, использующиеся в настоящее время для обработки потоковых данных:
- Samza (использует YARN для выполнениях вычислений, имеет поддержку Kafka из коробки);
- Storm (может использовать YARN, но может работать и без; нет встроенной поддержки Kafka/Flume).
[править] Хранение потоковых данных
Хранение потоковых данных может быть организовано с помощью:
- Redis,
- Cassandra (в особенности, когда данных много и они редко запращиваются);
- MongoDB (хороший выбор, в частности, есть поддержка GIS).
[править] Дополнительная информация
- A collection of links for streaming algorithms and data structures (англ.) — подборка ссылок на алгоритмы и структуры для обработки потоковых данных