Источник
Обзор книги
Оригинальный обзор Александра Поломодова на tellmeabout.tech
Streaming Data: Understanding the Real-Time Pipeline (Потоковая обработка данных)
Авторы: Andrew Psaltis
Издательство: Manning Publications, 2017 (русское издание: ДМК Пресс, 2018)
Объём: 216 страниц
Andrew Psaltis о потоковой обработке: Collection/Queue/Analysis tiers, семантика доставки, окна данных, алгоритмы на потоке.
Оригинал
ПереводАрхитектура потоковой системы
Книга рассматривает весь pipeline работы с данными от источника до финального потребителя. Референсная архитектура включает следующие звенья:
Связанная тема
Kafka: The Definitive Guide
Глубокое погружение в одну из ключевых технологий потоковой обработки
Сбор данных из источников
Буферизация и маршрутизация
Обработка и анализ потока
Хранение в памяти
Доступ к обработанным данным
Потребители данных
Collection Tier — Звено сбора данных
Рекомендация автора
Enterprise Integration Patterns
Классическая книга по интеграционным паттернам, на которую ссылается автор
Глава рассматривает паттерны взаимодействия для сбора данных:
Отказоустойчивость
Автор рассматривает два подхода: контрольные точки и протоколирование. Для потоковых систем более применимо протоколирование:
Receiver-based message logging
Sender-based message logging
Hybrid message logging
Message Queuing Tier — Очередь сообщений
Цель этого звена — разрыв связи между сбором и анализом данных. Ключевые концепции: производитель, брокер и потребитель.
Семантика доставки сообщений
Сообщение доставляется не более одного раза, возможна потеря
Гарантированная доставка, возможны дубликаты
Ровно одна доставка, самая сложная реализация
Analysis Tier — Анализ потоковых данных
Связанная глава
DDIA: Stream Processing
11 глава DDIA глубоко раскрывает тему потоковой обработки
Самая содержательная часть книги. Начинается с концепции in-flight dataи инверсии традиционной модели управления данными.
Технологии обработки
Общие компоненты
- Application Driver
- Streaming Manager
- Stream Processor
- Data Sources
Ключевые функции при выборе системы
Message Delivery
Семантика доставки
State Management
Управление состоянием
Fault Tolerance
Отказоустойчивость
Ограничения алгоритмов на потоке
- •Однопроходность — один шанс на обработку каждого сообщения
- •Concept drift — свойства модели могут меняться с новыми данными
- •Ограниченность ресурсов — не всегда хватает мощности для обработки
- •Время — различие между временем потока и временем события
Окна данных и обобщение
Sliding Window
Скользящее окно — перекрывающиеся интервалы для непрерывного анализа
Tumbling Window
Прыгающее окно — непересекающиеся интервалы фиксированного размера
Методы обобщения данных на потоке
Случайная выборка
Репрезентативная часть потока
LogLog / MinCount
Подсчёт уникальных элементов
Count-Min Sketch
Частота встречи элемента
Фильтр Блума
Вопрос о вхождении элемента
Хранение данных
Long-term Storage
- •Прямая запись — снижает скорость потока
- •Непрямая запись — ETL с пакетной загрузкой
In-Memory Storage
Стратегии кеширования
Read-through
Сквозное чтение
Refresh-ahead
Опережающее обновление
Write-through
Сквозная запись
Write-around
Обходная запись
Write-behind
Отложенная запись
Data Access Tier — Доступ к данным
Паттерны взаимодействия
- Data Sync
- RPC / RMI
- Simple Messaging
- Publish-Subscribe
Протоколы доставки
Факторы выбора протокола
Consumer Tier — Потребители данных
Информационные приложения
Дашборды, отчёты, визуализация
Интеграция со сторонними системами
API, webhooks, синхронизация
Обработка потока
Downstream processing
Ключевые вопросы для потокового клиента
- 1.Как клиенту узнать, что он читает недостаточно быстро?
- 2.Что произойдёт, если он об этом не узнает?
- 3.Как масштабировать клиента, чтобы он успевал за потоком?
Итоги
"Краткость — сестра таланта" — А.П. Чехов
Книга полезная и короткая (около 200 страниц), что делает её ещё лучше. Концептуально она не устарела за годы с момента выпуска — архитектурные паттерны потоковой обработки остаются актуальными.
