Apache Kafka. Потоковая обработка и анализ данных

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"

При работе любого enterprise-приложения образуются данные: это файлы логов, метрики, информация об активности пользователей, исходящие сообщения и т. п. Правильные манипуляции над всеми этими данными не менее важны, чем сами данные. Если вы — архитектор, разработчик или выпускающий инженер, желающий решать подобные проблемы, но пока не знакомы с Apache Kafka, то именно отсюда узнаете, как работать с этой свободной потоковой платформой, позволяющей обрабатывать очереди данных в реальном времени.

Author(s): Гвен Шапира, Тодд Палино, Раджини Сиварам, Крит Петти
Series: Бестселлеры O’Reilly
Edition: 2
Publisher: Питер
Year: 2023

Language: Russian
Commentary: Publisher's PDF
Pages: 512
City: СПб.
Tags: Security; Big Data; Java; Monitoring; Stream Processing; Apache Kafka; Clusters; Best Practices; Data Pipelines; Metrics

Отзывы о книге
Предисловие ко второму изданию
Предисловие к первому изданию
Введение
Для кого предназначена эта книга
Условные обозначения
Использование примеров кода
Благодарности
От издательства
Глава 1. Знакомьтесь: Kafka
Обмен сообщениями по типу «публикация/подписка»
С чего все начинается
Отдельные системы организации очередей
Открываем для себя систему Kafka
Сообщения и пакеты
Схемы
Топики и разделы
Производители и потребители
Брокеры и кластеры
Несколько кластеров
Почему Kafka?
Несколько производителей
Несколько потребителей
Сохранение информации на диске
Масштабируемость
Высокое быстродействие
Особенности платформы
Экосистема данных
Сценарии применения
История создания Kafka
Проблема LinkedIn
Рождение Kafka
Открытый исходный код
Коммерческое взаимодействие
Название
Приступаем к работе с Kafka
Глава 2. Установка Kafka
Настройка среды
Выбрать операционную систему
Установить Java
Установить ZooKeeper
Установка брокера Kafka
Настройка брокера
Основные параметры брокера
Настройки топиков по умолчанию
Выбор аппаратного обеспечения
Пропускная способность дисков
Емкость диска
Память
Передача данных по сети
CPU
Kafka в облачной среде
Microsoft Azure
Веб-сервисы Amazon Web Services
Настройка кластеров Kafka
Сколько должно быть брокеров
Конфигурация брокеров
Тонкая настройка операционной системы
Промышленная эксплуатация
Параметры сборки мусора
Планировка ЦОД
Размещение приложений на ZooKeeper
Резюме
Глава 3. Производители Kafka: запись сообщений в Kafka
Обзор производителя
Построение производителя Kafka
Отправка сообщения в Kafka
Синхронная отправка сообщения
Асинхронная отправка сообщения
Настройка производителей
client.id
acks
Время доставки сообщения
linger.ms
buffer.memory
compression.type
batch.size
max.in.flight.requests.per.connection
max.request.size
receive.buffer.bytes и send.buffer.bytes
enable.idempotence
Сериализаторы
Пользовательские сериализаторы
Сериализация с помощью Apache Avro
Использование записей Avro с Kafka
Разделы
Реализация пользовательской стратегии секционирования
Заголовки
Перехватчики
Квоты и регулирование запросов
Резюме
Глава 4. Потребители Kafka: чтение данных из Kafka
Принципы работы потребителей Kafka
Потребители и группы потребителей
Группы потребителей и перебалансировка разделов
Статические участники группы
Создание потребителя Kafka
Подписка на топики
Цикл опроса
Безопасность потоков
Настройка потребителей
fetch.min.bytes
fetch.max.wait.ms
fetch.max.bytes
max.poll.records
max.partition.fetch.bytes
session.timeout.ms и heartbeat.interval.ms
max.poll.interval.ms
default.api.timeout.ms
request.timeout.ms
auto.offset.reset
enable.auto.commit
partition.assignment.strategy
client.id
client.rack
group.instance.id
receive.buffer.bytes и send.buffer.bytes
offsets.retention.minutes
Фиксация и смещения
Автоматическая фиксация
Фиксация текущего смещения
Асинхронная фиксация
Сочетание асинхронной и синхронной фиксации
Фиксация заданного смещения
Прослушивание на предмет перебалансировки
Получение записей с заданными смещениями
Выход из цикла
Десериализаторы
Пользовательские сериализаторы
Использование десериализации Avro в потребителе Kafka
Автономный потребитель: зачем и как использовать потребитель без группы
Резюме
Глава 5. Программное управление Apache Kafka
Обзор AdminClient
Асинхронный и в итоге согласованный API
Опции
Горизонтальная иерархия
Дополнительные примечания
Жизненный цикл AdminClient: создание, настройка и закрытие
client.dns.lookup
request.timeout.ms
Управление основными топиками
Управление конфигурацией
Управление группами потребителей
Изучение групп потребителей
Модификация групп потребителей
Метаданные кластера
Расширенные операции администратора
Добавление разделов в топик
Удаление записей из топика
Выборы лидера
Переназначение реплик
Тестирование
Резюме
Глава 6. Внутреннее устройство Kafka
Членство в кластере
Контроллер
KRaft: новый контроллер Kafka на основе Raft
Репликация
Обработка запросов
Запросы от производителей
Запросы на извлечение
Другие запросы
Физическое хранилище
Многоуровневое хранилище
Распределение разделов
Управление файлами
Формат файлов
Индексы
Сжатие
Как происходит сжатие
Удаленные события
Когда выполняется сжатие топиков
Резюме
Глава 7. Надежная
доставка данных
Гарантии надежности
Репликация
Настройка брокера
Коэффициент репликации
«Нечистый» выбор ведущей реплики
Минимальное число согласованных реплик
Поддержание синхронизации реплик
Долговременное хранение на диске
Использование производителей в надежной системе
Отправка подтверждений
Настройка повторов отправки производителями
Дополнительная обработка ошибок
Использование потребителей в надежной системе
Свойства конфигурации потребителей, важные для надежной обработки
Фиксация смещений в потребителях явным образом
Проверка надежности системы
Проверка конфигурации
Проверка приложений
Мониторинг надежности при промышленной эксплуатации
Резюме
Глава 8. Семантика «только один раз»
Идемпотентный производитель
Как работает идемпотентный производитель
Ограничения идемпотентного производителя
Как использовать идемпотентный производитель Kafka
Транзакции
Варианты использования транзакций
Какие проблемы решают транзакции
Как происходит гарантия транзакций «только один раз»
Какие проблемы не решаются транзакциями
Как использовать транзакции
Идентификаторы транзакций и ограждения
Как работают транзакции
Функциональные характеристики транзакций
Резюме
Глава 9. Создание конвейеров данных
Соображения по поводу создания конвейеров данных
Своевременность
Надежность
Высокая/переменная нагрузка
Форматы данных
Преобразования
Безопасность
Обработка сбоев
Связывание и быстрота адаптации
Когда использовать Kafka Connect, а когда клиенты-производители и клиенты-потребители
Kafka Connect
Запуск Kafka Connect
Пример коннектора: файловый источник и файловый приемник
Пример коннектора: из MySQL в Elasticsearch
Преобразования одиночных сообщений
Взглянем на Kafka Connect поближе
Альтернативы Kafka Connect
Фреймворки ввода и обработки данных для других хранилищ
ETL-утилиты на основе GUI
Фреймворки потоковой обработки
Резюме
Глава 10. Зеркальное копирование между кластерами
Сценарии зеркального копирования данных между кластерами
Мультикластерные архитектуры
Реалии взаимодействия между различными ЦОД
Архитектура с топологией типа «звезда»
Архитектура типа «активный — активный»
Архитектура типа «активный — резервный»
Эластичные кластеры
Утилита MirrorMaker (Apache Kafka)
Настройка MirrorMaker
Топология мультикластерной репликации
Обеспечение безопасности MirrorMaker
Развертывание MirrorMaker для промышленной эксплуатации
Тонкая настройка MirrorMaker
Другие программные решения для зеркального копирования между кластерами
uReplicator компании Uber
LinkedIn Brooklin
Решения для зеркального копирования данных между ЦОД от компании Confluent
Резюме
Глава 11. Обеспечение
безопасности Kafka
Блокировка Kafka
Протоколы безопасности
Аутентификация
SSL
SASL
Повторная проверка подлинности
Обновления системы безопасности без простоя
Шифрование
Сквозное шифрование
Авторизация
AclAuthorizer
Настройка авторизации
Вопросы безопасности
Аудит
Обеспечение безопасности ZooKeeper
SASL
SSL
Авторизация
Обеспечение безопасности платформы
Защита паролей
Резюме
Глава 12. Администрирование Kafka
Операции с топиками
Создание нового топика
Перечисление всех топиков в кластере
Подробное описание топиков
Добавление разделов
Уменьшение количества разделов
Удаление топика
Группы потребителей
Вывод списка и описание групп
Удаление группы
Управление смещениями
Динамические изменения конфигурации
Переопределение значений настроек топиков по умолчанию
Переопределение настроек клиентов и пользователей по умолчанию
Переопределение настроек конфигурации брокера по умолчанию
Описание переопределений настроек
Удаление переопределений настроек
Производство и потребление
Производитель консолей
Консольный потребитель
Управление разделами
Выбор предпочтительной ведущей реплики
Смена реплик раздела
Сброс на диск сегментов журнала
Проверка реплик
Другие утилиты
Небезопасные операции
Перенос контроллера кластера
Отмена удаления топиков
Удаление топиков вручную
Резюме
Глава 13. Мониторинг Kafka
Основы показателей
Как получить доступ к показателям
Какие показатели мне нужны
Контроль состояния приложения
Цели на уровне обслуживания
Определения уровня сервиса
Какие показатели являются хорошими индикаторами уровня обслуживания
Использование целей уровня обслуживания для оповещений
Показатели брокеров Kafka
Диагностика проблем с кластером
Искусство недореплицированных разделов
Показатели брокеров
Показатели топиков и разделов
Мониторинг JVM
Мониторинг ОС
Журналирование
Мониторинг клиентов
Показатели производителя
Показатели потребителей
Квоты
Мониторинг отставания
Сквозной мониторинг
Резюме
Глава 14. Потоковая обработка
Что такое потоковая обработка
Основные понятия потоковой обработки
Топология
Время
Состояние
Таблично-потоковый дуализм
Временные окна
Гарантии обработки
Паттерны проектирования потоковой обработки
Обработка событий по отдельности
Обработка с использованием локального состояния
Многоэтапная обработка/повторное разделение на разделы
Обработка с применением внешнего справочника: соединение потока данных с таблицей
Соединение таблицы с таблицей
Соединение потоков
Внеочередные события
Повторная обработка
Интерактивные запросы
Kafka Streams в примерах
Подсчет количества слов
Сводные показатели фондовой биржи
Обогащение потока событий перехода по ссылкам
Kafka Streams: обзор архитектуры
Построение топологии
Оптимизация топологии
Тестирование топологии
Масштабирование топологии
Как пережить отказ
Сценарии использования потоковой обработки
Как выбрать фреймворк потоковой обработки
Резюме
Приложение А. Установка Kafka на других операционных системах
Установка на Windows
Использование Windows Subsystem для Linux
Использование Java естественным образом
Установка на macOS
Использование Homebrew
Установка вручную
Приложение Б. Дополнительные инструменты Kafka
Комплексные платформы
Развертывание и управление кластером
Мониторинг и исследование данных
Клиентские библиотеки
Потоковая обработка
Об авторах
Иллюстрация на обложке