Kafka Streams и ksqlDB: данные в реальном времени

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

Работа с неограниченными и быстрыми потоками данных всегда была сложной задачей. Но Kafka Streams и ksqlDB позволяют легко и просто создавать приложения потоковой обработки. Из книги специалисты по обработке данных узнают, как с помощью этих инструментов создавать масштабируемые приложения потоковой обработки, перемещающие, обогащающие и преобразующие большие объемы данных в режиме реального времени. Митч Сеймур, инженер службы обработки данных в Mailchimp, объясняет важные понятия потоковой обработки на примере нескольких любопытных бизнес-задач. Он рассказывает о достоинствах Kafka Streams и ksqlDB, чтобы помочь вам выбрать наиболее подходящий инструмент для каждого уникального проекта потоковой обработки. Для разработчиков, не пишущих код на Java, особенно ценным будет материал, посвященный ksqlDB.

Author(s): Митч Сеймур
Series: Библиотека программиста
Edition: 1
Publisher: Питер
Year: 2023

Language: Russian
Commentary: Publisher's PDF
Pages: 432
City: СПб.
Tags: SQL; Relational Databases; Monitoring; Stream Processing; Apache Kafka; Deployment; Data Modeling; Testing; Stateless Applications; Data Integration; Data Engineering; Stateful Applications; ksqlDB

Предисловие
Введение
Кому адресована книга
Структура издания
Исходный код
Версия Kafka Streams
Версия ksqlDB
Условные обозначения
Использование исходного кода примеров
Благодарности
От издательства
ЧАСТЬ I. KAFKA
Глава 1. Краткое введение в Kafka
Модель взаимодействия
Как хранятся потоки
Темы и разделы
События
Кластер и брокеры
Группы потребителей
Установка Kafka
Hello Kafka
Заключение
ЧАСТЬ II. БИБЛИОТЕКА KAFKA STREAMS
Глава 2. Начало работы с Kafka Streams
Экосистема Kafka
До появления Kafka Streams
Рождение Kafka Streams
Обзор функционала
Эксплуатационные характеристики
Масштабируемость
Надежность
Удобство сопровождения
Сравнение с другими системами
Модель развертывания
Модель обработки
Каппа-архитектура
Сценарии использования
Топология обработчиков
Субтопологии
Обработка вглубь
Преимущества программирования потоков данных
Задачи и потоки выполнения
Высокоуровневый DSL и низкоуровневый API узлов-обработчиков
Начало практической работы: Hello Streams
Настройка проекта
Создание проекта
Добавление зависимости Kafka Streams
Вариант на базе DSL
API узлов-обработчиков
Потоки данных и таблицы
Потоково-табличный дуализм
KStream KTable GlobalKTable
Заключение
Глава 3. Обработка без сохранения состояния
Обработка с сохранением и без сохранения состояния
Обработка потока твитов
Настройка проекта
Добавление узла-источника KStream
Сериализация/десериализация
Пользовательская версия класса Serdes
Определение классов данных
Пользовательский десериализатор
Пользовательский сериализатор
Класс Serdes для твитов
Фильтрация данных
Ветвление данных
Перевод твитов
Слияние потоков
Обогащение твитов
Класс данных Avro
Анализ тональности
Сериализация данных Avro
Сериализация формата Avro без сохранения схемы в реестре
Сериализация формата Avro с сохранением схемы в реестре
Добавление узла-приемника
Запуск кода
Эмпирическая проверка
Заключение
Глава 4. Обработка с сохранением состояния
Преимущества операций с сохранением состояния
Обзор методов
Хранилища состояний
Общие характеристики
Постоянные хранилища и хранилища в оперативной памяти
Список лидеров видеоигр
Настройка проекта
Модели данных
Добавление узлов-источников
KStream
KTable
GlobalKTable
Абстракции потока и таблиц
Соединение
Операторы соединения
Типы соединений
Совместное секционирование
Интерфейс ValueJoiner
Соединение KStream и KTable
Соединение KStream и GlobalKTable
Группировка записей
Группировка потоков
Группировка таблиц
Агрегирование
Агрегирование потоков
Агрегирование таблиц
Объединение фрагментов кода
Интерактивные запросы
Материализованные хранилища
Доступ на чтение из хранилища состояний
Запросы к неоконным хранилищам «ключ — значение»
Локальные запросы
Удаленные запросы
Заключение
Глава 5. Окна и время
Приложение для контроля состояния пациентов
Настройка проекта
Модели данных
Семантики времени
Экстракторы отметок времени
Встроенные экстракторы отметок времени
Свои собственные экстракторы отметок времени
Регистрация потоков со своими экстракторами отметок времени
Оконная обработка потоков
Типы окон
Выбор типа окна
Оконное агрегирование
Вывод результатов оконной обработки
Период отсрочки
Подавление
Фильтрация и изменение ключей оконных таблиц KTable
Оконные соединения
Потоки данных управляемые временем
Приемник предупреждений
Запрос оконных хранилищ «ключ — значение»
Заключение
Глава 6. Расширенное управление состоянием
Организация хранилища состояний на диске
Отказоустойчивость
Темы журналов изменений
Резервные реплики
Перебалансировка: враг состояния (хранилища)
Предотвращение миграции состояния
Закрепленное назначение
Статическое членство
Уменьшение влияния перебалансировки
Пошаговая кооперативная перебалансировка
Управление размером состояния
Исключение повторных операций записи с помощью кэширования
Мониторинг хранилища состояний
Обработка событий изменения состояния
Обработка событий восстановления хранимого состояния
Встроенные метрики
Интерактивные запросы
Нестандартные хранилища состояний
Заключение
Глава 7. Processor API
Когда использовать Processor API
Служба цифровых двойников IoT
Настройка проекта
Модели данных
Добавление узлов-источников
Добавление узлов-обработчиков без состояния
Создание узлов без состояния
Создание узлов с состоянием
Периодическое выполнение функций с Punctuate
Доступ к метаданным записей
Добавление узла-приемника
Интерактивные запросы
Все вместе
Объединение Processor API и DSL
Обработчики и преобразователи
Все вместе: реорганизация
Заключение
ЧАСТЬ III. KSQLDB
Глава 8. Знакомство с ksqlDB
Что такое ksqlDB
Когда следует использовать ksqlDB
Эволюция базы данных нового типа
Интеграция с Kafka Streams
Интеграция с Kafka Connect
Сравнение ksqlDB с традиционной базой данных SQL
Сходства
Отличия
Архитектура
Сервер ksqlDB
Клиенты ksqlDB
Режимы развертывания
Интерактивный режим
Автономный режим
Учебный проект
Установка ksqlDB
Запуск сервера ksqlDB
Предварительное создание тем
Использование интерфейса командной строки ksqlDB CLI
Заключение
Глава 9. Интеграция данных в ksqlDB
Обзор Kafka Connect
Внешняя и встроенная интеграция с Connect
Внешняя интеграция
Встроенная интеграция
Настройка рабочих процессов Connect
Конвертеры и форматы сериализации
Учебный проект
Установка коннекторов
Создание экземпляров коннекторов в ksqlDB
Вывод списка коннекторов
Получение описаний коннекторов
Удаление коннекторов
Проверка коннектора-источника
Взаимодействие с кластером Kafka Connect напрямую
Анализ управляемых схем
Заключение
Глава 10. Основы потоковой обработки с ksqlDB
Учебный проект: мониторинг изменений в Netflix
Настройка проекта
Исходные темы
Типы данных
Пользовательские типы
Коллекции
Создание исходных коллекций
Оператор WITH
Работа с потоками и таблицами
Вывод списка потоков и таблиц
Получение описаний потоков и таблиц
Изменение потоков и таблиц
Удаление потоков и таблиц
Простые запросы
Вставка значений
Простая выборка (временные push-запросы)
Проекция
Фильтрация
Подстановочные знаки
Развертывание/упрощение сложных вложенных структур
Условные выражения
COALESCE
IFNULL
Оператор CASE
Запись результатов обратно в Kafka (постоянные запросы)
Создание производных коллекций
Все вместе
Заключение
Глава 11. Продвинутая обработка потоков с ksqlDB
Настройка проекта
Инициализация окружения из файла SQL
Обогащение данных
Соединения
Оконные соединения
Агрегирование
Основы агрегирования
Оконное агрегирование
Материализованные представления
Клиенты
Pull-запросы
curl
Push-запросы
Push-запросы из curl
Функции и операторы
Операторы
Вывод списка доступных функций
Получение описаний функций
Создание своих функций
Дополнительная информация о пользовательских функциях ksqlDB
Заключение
ЧАСТЬ IV. ПУТЬ К ПРОМЫШЛЕННОЙ ЭКСПЛУАТАЦИИ
Глава 12. Тестирование мониторинг и развертывание
Тестирование
Тестирование запросов ksqlDB
Тестирование приложений Kafka Streams
Поведенческие тесты
Оценка производительности
Оценка производительности кластера Kafka
Заключительные замечания о тестировании
Мониторинг
Виды мониторинга
Извлечение метрик JMX
Развертывание
Контейнеры ksqlDB
Контейнеры Kafka Streams
Оркестрация контейнеров
Операции
Повторная обработка данных в приложении Kafka Streams
Ограничение скорости вывода приложением
Обновление Kafka Streams
Обновление ksqlDB
Заключение
Приложение A. Настройка Kafka Streams
Управление конфигурацией
Конфигурационные свойства
Конфигурационные свойства потребителей
Приложение Б. Настройка ksqlDB
Параметры запросов
Параметры сервера
Настройки безопасности
Об авторе
Иллюстрация на обложке