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

Обновлено: 25 марта 2026 г. в 03:00

Streaming Data (short summary)

hard

Streaming становится понятнее, когда перестаешь видеть в нем просто Kafka плюс обработчик и начинаешь мыслить collection, queue и analysis tiers, event time и состояние потока как единую систему.

В инженерной практике эта книга помогает проектировать stream-first pipeline с учетом ordering, stateful processing, late events и границ materialization, чтобы архитектура не ломалась на первом серьезном replay или backfill.

В интервью и архитектурных разборах она особенно полезна там, где нужно показать цену потоковой обработки: reprocessing cost, влияние late events на correctness и то, как backfill начинает давить на SLA.

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

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

Помогает строить stream-first pipeline с учетом event-time, ordering и stateful processing.

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

Дает критерии выбора batch vs stream и границ materialization для аналитических задач.

Interview-аргументация

Позволяет уверенно объяснить offset management, windowing и exactly-once иллюзии.

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

Фокусирует на late events, reprocessing cost и влиянии backfill на SLA.

Источник

Обзор книги

Оригинальный обзор Александра Поломодова на 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

Сбор данных из источников

Message Queue Tier

Буферизация и маршрутизация

Analysis Tier

Обработка и анализ потока

In-Memory Store

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

Data Access Tier

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

Consumer Tier

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

Collection Tier — Звено сбора данных

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

Enterprise Integration Patterns

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

Читать обзор

Глава рассматривает паттерны взаимодействия для сбора данных:

Request/Response — Классический запрос-ответ
Request/Acknowledge — Запрос с подтверждением получения
Publish/Subscribe — Издатель-подписчик
One-way — Одностороннее взаимодействие
Stream — Непрерывный поток данных

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

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

RBML

Receiver-based message logging

SBML

Sender-based message logging

HML

Hybrid message logging

Message Queuing Tier — Очередь сообщений

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

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

At most once

Сообщение доставляется не более одного раза, возможна потеря

Низкая
At least once

Гарантированная доставка, возможны дубликаты

Средняя
Exactly once

Ровно одна доставка, самая сложная реализация

Высокая

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

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

DDIA: Stream Processing

11 глава DDIA глубоко раскрывает тему потоковой обработки

Читать обзор

Самая содержательная часть книги. Начинается с концепции in-flight dataи инверсии традиционной модели управления данными.

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

Spark StreamingStormFlinkSamza

Общие компоненты

  • 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

SQLiteRocksDBLevelDBMemcachedRedisMemSQLAerospikeApache Ignite

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

Read-through

Сквозное чтение

Refresh-ahead

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

Write-through

Сквозная запись

Write-around

Обходная запись

Write-behind

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

Data Access Tier — Доступ к данным

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

  • Data Sync
  • RPC / RMI
  • Simple Messaging
  • Publish-Subscribe

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

WebhooksLong PollSSEWebSocket

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

Update Frequency
Direction
Latency
Efficiency
Fault Tolerance

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

📊

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

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

🔗

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

API, webhooks, синхронизация

Обработка потока

Downstream processing

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

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

Итоги

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

Книга полезная и короткая (около 200 страниц), что делает её ещё лучше. Концептуально она не устарела за годы с момента выпуска — архитектурные паттерны потоковой обработки остаются актуальными.

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

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

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