Это практическое руководство показывает, как использовать распределенную потоковую платформу Apache Kafka для удовлетворения различных бизнес-требований. Рассказывается, как устроена Kafka и где она может пригодиться на практике; описываются характеристики проектов, в которых может пригодиться эта платформа. Рассматриваются основные ее компоненты – клиенты и кластер, представлены варианты улучшения работающего кластера. Книга адресована разработчикам, желающим ознакомиться с идеей потоковой обработки данных. Для изучения примеров кода понадобятся базовые знания командной строки; желательно иметь навыки программирования на языке Java.
Author(s): Дилан Скотт, Виктор Гамов, Дейв Клейн
Publisher: ДМК Пресс
Year: 2022
Language: Russian
Pages: 312
City: Москва
Tags: Kafka
Об иллюстрации на обложке
Часть I
Начало
Об авторах
Об этой книге
Благодарности
Предисловие
Предисловие от издательства
Вступление
1
Введение в Kafka
1.1. Что такое Kafka?
1.2. Использование Kafka
1.2.1. Kafka – разработчикам
1.2.2. Как преподнести Kafka вашему руководству
1.3. Мифы о Kafka
1.3.1. Kafka работает только с Hadoop®
1.3.2. Kafka ничем не отличается от других брокеров сообщений
1.4. Kafka в реальном мире
1.4.1. Ранние примеры
1.4.2. Более поздние примеры
1.4.3. Когда Kafka может быть неприменима
1.5. Онлайн-ресурсы
Итоги
Ссылки
2
Знакомство с Kafka
2.1. Отправка и прием сообщения
2.2. Что такое брокер?
2.3. Экскурсия по Kafka
2.3.1. Производители и потребители
2.3.2. Темы
2.3.3. ZooKeeper
2.3.4. Высокоуровневая архитектура Kafka
2.3.5. Журнал коммитов
2.4. Различные пакеты исходного кода, и что они делают
2.4.1. Kafka Streams
2.4.2. Kafka Connect
2.4.3. Пакет AdminClient
2.4.4. ksqlDB
2.5. Клиенты Confluent
2.6. Потоковая обработка и терминология
2.6.1. Потоковая обработка
2.6.2. Что означает семантика «точно один раз»
Итоги
Ссылки
Часть II
Практическое применение Kafka
3
Разработка проекта на основе Kafka
3.1. Разработка проекта на основе Kafka
3.1.1. Использование существующей архитектуры данных
3.1.2. Первый шаг
3.1.3. Встроенные возможности
3.1.4. Данные для наших накладных
3.2. События датчиков
3.2.1. Имеющиеся проблемы
3.2.2. Почему Kafka – правильный выбор
3.2.3. Первые мысли об архитектуре
3.2.4. Требования к пользовательским данным
3.2.5. Общий план с учетом поставленных вопросов
3.2.6. Обзор и оценка плана
3.3. Формат представления данных
3.3.1. План для данных
3.3.2. Настройка зависимостей
Итоги
Ссылки
4
Производители: источники данных
4.1. Пример
4.1.1. Примечания в отношении производителя
4.2. Параметры производителя
4.2.1. Настройка списка брокеров
4.2.2. Быстрее или надежнее?
4.2.3. Отметки времени
4.3. Генерирование кода с учетом наших требований
4.3.1. Версии клиентов и брокеров
Итоги
Ссылки
5
Потребители: извлечение данных
5.1. Пример
5.1.1. Параметры потребителя
5.1.2. Наши координаты в потоке событий
5.2. Как взаимодействуют потребители
5.3. Трассировка
5.3.1. Координатор группы
5.3.2. Стратегия назначения разделов
5.4. Маркировка местонахождения
5.5. Чтение из сжатой темы
5.6. Реализация в коде наших заводских требований
5.6.1. Варианты чтения
5.6.2. Требования
Итоги
Ссылки
6
Брокеры
6.1. Знакомство с брокерами
6.2. Роль ZooKeeper
6.3. Конфигурационные параметры брокеров
6.3.1. Другие журналы Kafka: журналы приложений
6.3.2. Журнал сервера
6.3.3. Управление состоянием
6.4. Ведущие реплики разделов и их роль
6.4.1. Потеря данных
6.5. Взгляд внутрь Kafka
6.5.1. Обслуживание кластера
6.5.2. Добавление брокера
6.5.3. Обновление кластера
6.5.4. Обновление клиентов
6.5.5. Резервные копии
6.6. Примечание о системах с сохранением состояния
6.7. Упражнение
Итоги
Ссылки
7
Темы и разделы
7.1. Темы
7.1.1. Параметры создания темы
7.1.2. Коэффициенты репликации
7.2. Разделы
7.2.1. Размещение раздела
7.2.2. Просмотр журналов
7.3. Тестирование с помощью EmbeddedKafkaCluster
7.3.1. Использование Kafka Testcontainers
7.4. Сжатые темы
Итоги
Ссылки
8
Kafka как хранилище
8.1. Как долго можно хранить данные
8.2. Перемещение данных
8.2.1. Сохранение исходных событий
8.2.2. `Отказ от пакетного мышления
8.3. Инструменты
8.3.1. Apache Flume
8.3.2. Red Hat® Debezium™
8.3.3. Secor
8.3.4. Пример сохранения данных
8.4. Возврат данных в Kafka
8.4.1. Многоуровневое хранилище
8.5. Архитектуры с использованием Kafka
8.5.1. Лямбда-архитектура
8.5.2. Каппа-архитектура
8.6. Окружения с несколькими кластерами
8.6.1. Масштабирование путем добавления кластеров
8.7. Варианты хранения в облаке и в контейнерах
8.7.1. Кластеры Kubernetes
Итоги
Ссылки
9
Управление: инструменты и журналы
9.1. Клиенты администрирования
9.1.1. Решение задач администрирования в коде с помощью AdminClient
9.1.2. kcat
9.1.3. Confluent REST Proxy API
9.2. Запуск Kafka как службы systemd
9.3. Журналы
9.3.1. Журналы приложений Kafka
9.3.2. Журналы ZooKeeper
9.4. Брандмауэры
9.4.1. Публикуемые слушатели
9.5. Метрики
9.5.1. Консоль JMX
9.6. Способы трассировки
9.6.1. Логика на стороне производителя
9.6.2. Логика на стороне потребителя
9.6.3. Переопределение клиентов
9.7. Общие инструменты мониторинга
Итоги
Ссылки
Часть III
Дополнительные возможности
10
Защита Kafka
10.1. Основы безопасности
10.1.1. Шифрование с помощью SSL
10.1.2. Настройка соединений SSL между брокерами и клиентами
10.1.3. Настройка соединений SSL между брокерами
10.2. Kerberos и Simple Authentication and Security Layer (SASL)
10.3. Авторизация в Kafka
10.3.1. Списки управления доступом
10.3.2. Управление доступом на основе ролей
10.4. ZooKeeper
10.4.1. Настройка Kerberos
10.5. Квоты
10.5.1. Ограничение пропускной способности сети
10.5.2. Ограничение частоты запросов
10.6. Данные в состоянии покоя
10.6.1. Управляемые варианты
Итоги
Ссылки
11
Реестр схем
11.1. Предлагаемая модель зрелости Kafka
11.1.1. Уровень 0
11.1.2. Уровень 1
11.1.3. Уровень 2
11.1.4. Уровень 3
11.2. Реестр схем
11.2.1. Установка Confluent Schema Registry
11.2.2. Конфигурация реестра
11.3. Компоненты реестра схем
11.3.1. REST API
11.3.2. Клиентская библиотека
11.4. Правила совместимости
11.4.1. Проверка изменений схемы
11.5. Альтернатива реестру схем
Итоги
Ссылки
12
Потоковая обработка с помощью Kafka Streams и ksqlDB
12.1. Kafka Streams
12.1.1. KStreams API DSL
12.1.2. KTable API
12.1.3. GlobalKTable API
12.1.4. Processor API
12.1.5. Настройка Kafka Streams
12.2. ksqlDB: база данных потоковой передачи событий
12.2.1. Запросы
12.2.2. Локальная разработка
12.2.3. Архитектура ksqlDB
12.3. Куда пойти дальше
12.3.1. Предложения по улучшению Kafka (KIP)
12.3.2. Проекты Kafka, которые вы можете исследовать
12.3.3. Каналы Slack сообщества
Итоги
Ссылки
Приложение A. Установка
Приложение B. Пример клиента
Предметный указатель