System Design Space
Граф знанийНастройки

Обновлено: 1 мая 2026 г. в 18:48

Streaming Data (short summary)

сложный

Потоковая обработка становится понятнее, когда перестаёшь видеть в ней просто Kafka плюс обработчик и начинаешь мыслить слоями приёма, очереди, анализа, времени события и состояния потока.

В инженерной практике эта книга помогает проектировать потоковый конвейер с явным порядком обработки, состоянием, опоздавшими событиями и границами материализации, чтобы архитектура переживала повторные прогоны и исторические пересчёты.

В интервью и архитектурных разборах она особенно полезна там, где нужно показать цену потоковой обработки: повторную обработку, влияние опоздавших событий на корректность и давление исторического пересчёта на сервисные цели.

Практическая польза главы

Практика проектирования

Помогает строить потоковый конвейер с учётом времени события, порядка обработки и состояния.

Качество решений

Даёт критерии выбора между пакетной и потоковой обработкой и границ материализации для аналитики.

Аргументация на интервью

Позволяет уверенно объяснить управление смещениями, оконную обработку и ограничения гарантии «ровно один раз».

Риски и компромиссы

Фокусирует на опоздавших событиях, цене повторной обработки и влиянии исторического пересчёта на сервисные цели.

Источник

Обзор книги

Оригинальный обзор Александра Поломодова на tellmeabout.tech с разбором сильных сторон книги.

Перейти на сайт

Streaming Data: Understanding the Real-Time Pipeline (Потоковая обработка данных)

Авторы: Andrew Psaltis
Издательство: Manning Publications, 2017 (русское издание: ДМК Пресс, 2018)
Объём: 216 страниц

Andrew Psaltis о потоковой архитектуре: очередь сообщений, семантика доставки, время события, оконная обработка, состояние потока и исторический пересчёт.

Оригинал
Перевод

Книга помогает увидеть не как отдельный обработчик рядом с Kafka, а как цепочку приёма, буферизации, обработки, хранения и доставки данных до потребителей.

В этой цепочке важны , , роли , и , а также то, как система выдерживает , и требования .

Практическая часть упирается во , , , , , , , , , и .

Поэтому потоковый проектируют вокруг , , , , и честных ограничений гарантии .

Архитектура потоковой системы

Psaltis разбирает путь данных от источника до конечного потребителя. Эта схема полезна тем, что разделяет ответственность между приёмом событий, очередью, обработкой, хранилищем и интерфейсами доступа.

Связанная тема

Kafka: The Definitive Guide

Глубокое погружение в журнал событий, партиции, группы потребителей и практику эксплуатации Kafka.

Читать обзор
Сбор данных

Приём событий из приложений, устройств, логов и внешних систем.

Очередь сообщений

Буферизация, маршрутизация и выравнивание разных скоростей записи и чтения.

Анализ потока

Непрерывные вычисления, фильтрация, обогащение и агрегирование событий.

Хранилище в памяти

Быстрый доступ к свежему состоянию и промежуточным результатам.

Доступ к данным

API, подписки и протоколы доставки обработанных данных.

Потребители данных

Дашборды, сервисы, интеграции и последующие вычислительные контуры.

Сбор данных

Рекомендация автора

Enterprise Integration Patterns

Классическая книга по интеграционным паттернам, на которую опирается автор.

Читать обзор

На входе потоковой системы важно выбрать модель взаимодействия: синхронный запрос, подтверждение получения, публикацию события или непрерывную передачу данных.

Запрос-ответ — Клиент ждёт результат и платит задержкой синхронного вызова.
Запрос с подтверждением — Отправитель получает факт приёма, а обработка может продолжиться позже.
Публикация и подписка — Производитель не знает конкретных потребителей и публикует событие в канал.
Односторонняя отправка — Сообщение уходит без ожидания ответа, поэтому нужны явные правила надёжности.
Поток — Данные передаются непрерывно, а система работает с последовательностью событий.

Отказоустойчивость при сборе

Автор сравнивает контрольные точки и журналирование сообщений. Для потоковых систем журналирование обычно практичнее: оно позволяет восстановить обработку после сбоя и заново прочитать нужный диапазон событий.

RBML

Журналирование на стороне получателя

SBML

Журналирование на стороне отправителя

HML

Гибридное журналирование сообщений

Очередь сообщений

Очередь разрывает жёсткую связь между сбором и анализом данных. Производители могут писать события с одной скоростью, а потребители читать и обрабатывать их с другой.

Семантика доставки сообщений

Не более одного раза

Сообщение не дублируется, но при сбое может быть потеряно.

Низкая
Как минимум один раз

Сообщение не теряется, но обработчик должен выдерживать дубликаты.

Средняя
Ровно один раз

Побочный эффект должен произойти один раз, что требует строгих гарантий хранения и идемпотентности.

Высокая

Анализ потоковых данных

Связанная глава

DDIA: Stream Processing

DDIA глубже раскрывает состояние потока, время события, материализованные представления и компромиссы консистентности.

Читать обзор

Самая сильная часть книги - объяснение данных в движении: событие ещё не легло в финальное хранилище, но уже может менять состояние, агрегаты, оповещения и пользовательский интерфейс.

Технологии обработки

Spark StreamingStormFlinkSamza

Типовые компоненты

  • Драйвер приложения
  • Менеджер потоковой обработки
  • Потоковый обработчик
  • Источники данных

Что проверять при выборе системы

📨

Доставка сообщений

Потери, дубликаты, подтверждения и повторная доставка

💾

Управление состоянием

Локальное состояние, снимки и восстановление после сбоя

🛡️

Отказоустойчивость

Повторный запуск, журналирование и контроль побочных эффектов

Ограничения алгоритмов на потоке

  • Один проход: у обработчика часто есть только один шанс принять решение по событию.
  • Дрейф закономерностей: свойства данных меняются, и модель постепенно устаревает.
  • Ограниченные ресурсы: память, CPU и сеть должны выдерживать текущий поток.
  • Время: важно различать время события, время обработки и порядок поступления.

Окна данных и агрегирование

Скользящее окно

Перекрывающиеся интервалы, которые непрерывно сдвигаются и дают свежий агрегат.

Фиксированное окно

Непересекающиеся интервалы одинакового размера, удобные для регулярных отчётов и метрик.

Как обобщать поток без полного хранения истории

Случайная выборка

Репрезентативная часть потока для приближённой аналитики.

LogLog / MinCount

Приближённый подсчёт уникальных элементов.

Структура Count-Min Sketch

Оценка частоты элемента с ограниченным расходом памяти.

Фильтр Блума

Быстрая проверка возможного вхождения элемента в набор.

Хранение данных

Долгосрочное хранилище

  • Прямая запись: поток пишет в конечное хранилище сразу, но может упереться в его скорость.
  • Непрямая запись: поток сначала складывается в промежуточный слой, а затем загружается пакетно.

Хранилище в памяти

SQLiteRocksDBLevelDBMemcachedRedisMemSQLAerospikeApache Ignite

Стратегии кэширования

Чтение через кэш

Кэш сам загружает данные при промахе.

Упреждающее обновление

Кэш обновляется до истечения актуальности.

Запись через кэш

Запись синхронно проходит через кэш.

Запись в обход кэша

Холодные записи не загрязняют кэш.

Отложенная запись

Кэш сбрасывает изменения позже.

Доступ к обработанным данным

Паттерны взаимодействия

  • Синхронизация данных
  • RPC / RMI
  • Простые сообщения
  • Публикация и подписка

Протоколы доставки

WebhooksLong PollSSEWebSocket

Факторы выбора протокола

Частота обновлений
Направление обмена
Задержка
Эффективность
Отказоустойчивость

Потребители данных

📊

Информационные приложения

Дашборды, отчёты, визуализация и продуктовая аналитика.

🔗

Интеграция со сторонними системами

API, вебхуки, синхронизация и обмен событиями.

Следующая обработка

Новые вычислительные контуры, которые читают уже подготовленный поток.

Ключевые вопросы для потокового клиента

  • 1.Как потребитель поймёт, что отстаёт от входящего потока?
  • 2.Что произойдёт, если отставание будет расти незаметно?
  • 3.Как масштабировать чтение и обработку, не ломая порядок и семантику доставки?

Что важно запомнить

"Краткость - сестра таланта" - А. П. Чехов

Книга короткая, но полезная: она показывает потоковую платформу как систему с явными слоями, гарантиями доставки, состоянием, окнами, хранением и потребителями. Многие технологии изменились, но инженерные вопросы остались прежними: где хранить состояние, как восстанавливаться, как считать время и что делать, когда поток начинает опережать обработчиков.

Связанные главы

Где найти книгу

Чтобы отмечать прохождение, включи трекинг в Настройки