Kafka в действии
Покупка
Тематика:
Программирование на Java
Издательство:
ДМК Пресс
Перевод:
Киселев Артём Николаевич
Год издания: 2022
Кол-во страниц: 310
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
Дополнительное образование
ISBN: 978-5-93700-118-4
Артикул: 817214.01.99
Это практическое руководство показывает, как использовать распределенную потоковую платформу Apache Kafka для удовлетворения различных бизнес-требований. Рассказывается, как устроена Kafka и где она может пригодиться на практике; описываются характеристики проектов, в которых может пригодиться эта платформа. Рассматриваются основные ее компоненты — клиенты и кластер, представлены варианты улучшения работающего кластера.
Книга адресована разработчикам, желающим ознакомиться с идеей потоковой обработки данных. Для изучения примеров кода понадобятся базовые знания командной строки; желательно иметь навыки программирования на языке Java.
- Полная коллекция по информатике и вычислительной технике
- ДМК Пресс. Информационные системы и технологии
- ДМК Пресс. ИТ-технологии для профессионалов
- Интермедиатор. Информационные системы и технологии (сводная)
- Интермедиатор. ИТ-технологии для профессионалов (сводная)
- Программирование
- Программирование на Java
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Дилан Скотт, Виктор Гамов, Дейв Клейн Предисловие Юна Рао Kafka в действии
Kafka in Action DYLAN SCOTT VIKTOR GAMOV AND DAVE KLEIN FOREWORD BY JUN RAO
Kafka в действии ДИЛАН СКОТТ ВИКТОР ГАМОВ ДЕЙВ КЛЕЙН ПРЕДИСЛОВИЕ ЮНА РАО Москва, 2022
УДК 004.42 ББК 32.973 С44 Дилан Скотт, Виктор Гамов, Дейв Клейн С44 Kafka в действии / пер. с англ. А. Н. Киселева. – М.: ДМК Пресс, 2022. – 310 с.: ил. ISBN 978-5-93700-118-4 Это практическое руководство показывает, как использовать распределенную потоковую платформу Apache Kafka для удовлетворения различных бизнес-требований. Рассказывается, как устроена Kafka и где она может пригодиться на практике; описываются характеристики проектов, в которых может пригодиться эта платформа. Рассматриваются основные ее компоненты – клиенты и кластер, представлены варианты улучшения работающего кластера. Книга адресована разработчикам, желающим ознакомиться с идеей потоковой обработки данных. Для изучения примеров кода понадобятся базовые знания командной строки; желательно иметь навыки программирования на языке Java. УДК 004.42 ББК 32.973 Original English language edition published by Manning Publications, USA. Russian-language edition copyright (c) 2022 by DMK Press. All rights reserved. Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. © 2022 by Manning Publications Co. © Оформление, издание, перевод, ДМК Пресс, 2022 ISBN (анг.) 978-1-61729-523-2 ISBN (рус.) 978-5-93700-118-4
Дилан: Я посвящаю эту работу Харпер, которой я так горжусь, и Ноэль, каждый день доставляющей радость нашей семье. Я также хотел бы посвятить эту книгу своим родителям, сестре и супруге, которые всегда оказывали мне всяческую поддержку. Виктор: Эту работу я посвящаю своей супруге Марии за ее поддержку в процессе работы над этой книгой. Мне пришлось решать сложную задачу, выкраивая время то для того, то для другого. Без твоей поддержки у меня ничего бы не получилось. Я тебя люблю. Кроме того, хочу посвятить эту книгу (и выразить благодарность) моим детям, Эндрю и Майклу, за то, что они такие простодушные и прямолинейные. Когда люди спрашивают их, где работает папа, они отвечают: «Папа работает в Kafka». Дейв: Я посвящаю эту книгу своей супруге Дебби и нашим детям Захарии, Эбигейл, Бенджамину, Саре, Соломону, Ханне, Джоанне, Ребекке, Сюзанне, Ною, Самюэлю, Гидеону, Джошуа и Даниэлю. И наконец, все, что я делаю, я делаю во славу Творца и Спасителя нашего, Иисуса Христа.
Краткое оглавление 1 Введение в Kafka ................................................................... 26 2 Знакомство с Kafka ............................................................. 44 3 Разработка проекта на основе Kafka ............................. 75 4 Производители: источники данных ............................. 103 5 Потребители: извлечение данных ................................ 127 6 Брокеры ................................................................................. 155 7 Темы и разделы .................................................................... 176 8 Kafka как хранилище ......................................................... 193 9 Управление: инструменты и журналы ....................... 211 10 Защита Kafka ..................................................................... 236 11 Реестр схем .......................................................................... 256 12 Потоковая обработка с помощью Kafka Streams и ksqlDB ................................................................................. 270
Содержание Предисловие от издательства ................................................. 13 Предисловие ............................................................................ 14 Вступление ..............................................................................15 Благодарности ........................................................................ 16 Об этой книге .......................................................................... 18 Об авторах .............................................................................. 22 Об иллюстрации на обложке ................................................... 23 ЧАСТЬ I. НАЧАЛО ............................................................. 25 1 Введение в Kafka ............................................................. 26 1.1. Что такое Kafka? .......................................................................... 27 1.2. Использование Kafka .................................................................. 32 1.2.1. Kafka – разработчикам ..................................................... 32 1.2.2. Как преподнести Kafka вашему руководству ................ 34 1.3. Мифы о Kafka .............................................................................. 35 1.3.1. Kafka работает только с Hadoop® .................................. 35 1.3.2. Kafka ничем не отличается от других брокеров сообщений ....................................................................................... 36 1.4. Kafka в реальном мире ............................................................... 37 1.4.1. Ранние примеры................................................................ 37 1.4.2. Более поздние примеры .................................................. 39 1.4.3. Когда Kafka может быть неприменима .......................... 40 1.5. Онлайн-ресурсы .......................................................................... 41 Итоги ................................................................................................... 42 Ссылки ................................................................................................. 42 2 Знакомство с Kafka ........................................................ 44 2.1. Отправка и прием сообщения .................................................. 45 2.2. Что такое брокер? ....................................................................... 46 2.3. Экскурсия по Kafka ..................................................................... 51 2.3.1. Производители и потребители ...................................... 51 2.3.2. Темы .................................................................................... 55
2.3.3. ZooKeeper ........................................................................... 56 2.3.4. Высокоуровневая архитектура Kafka ............................. 58 2.3.5. Журнал коммитов ............................................................. 59 2.4. Различные пакеты исходного кода, и что они делают ......... 60 2.4.1. Kafka Streams ...................................................................... 60 2.4.2. Kafka Connect ..................................................................... 62 2.4.3. Пакет AdminClient ............................................................ 62 2.4.4. ksqlDB .................................................................................. 63 2.5. Клиенты Confluent ..................................................................... 63 2.6. Потоковая обработка и терминология ................................... 67 2.6.1. Потоковая обработка ....................................................... 69 2.6.2. Что означает семантика «точно один раз» ................... 69 Итоги ................................................................................................... 70 Ссылки ................................................................................................. 70 ЧАСТЬ II. ПРАКТИЧЕСКОЕ ПРИМЕНЕНИЕ KAFKA ....73 3 Разработка проекта на основе Kafka ..............................75 3.1. Разработка проекта на основе Kafka ........................................ 76 3.1.1. Использование существующей архитектуры данных ...............................................................................76 3.1.2. Первый шаг ........................................................................ 76 3.1.3. Встроенные возможности ............................................... 77 3.1.4. Данные для наших накладных ........................................ 80 3.2. События датчиков....................................................................... 82 3.2.1. Имеющиеся проблемы ..................................................... 82 3.2.2. Почему Kafka – правильный выбор ................................ 85 3.2.3. Первые мысли об архитектуре ....................................... 86 3.2.4. Требования к пользовательским данным ...................... 88 3.2.5. Общий план с учетом поставленных вопросов ............ 88 3.2.6. Обзор и оценка плана ....................................................... 92 3.3. Формат представления данных ................................................ 93 3.3.1. План для данных ............................................................... 93 3.3.2. Настройка зависимостей ................................................. 95 Итоги ................................................................................................. 101 Ссылки ............................................................................................... 101 4 Производители: источники данных .............................. 103 4.1. Пример ....................................................................................... 104 4.1.1. Примечания в отношении производителя ................. 107 4.2. Параметры производителя ..................................................... 108 4.2.1. Настройка списка брокеров .......................................... 109 Содержание 8
4.2.2. Быстрее или надежнее? .................................................. 110 4.2.3. Отметки времени ............................................................ 113 4.3. Генерирование кода с учетом наших требований................ 115 4.3.1. Версии клиентов и брокеров ........................................ 124 Итоги ................................................................................................. 125 Ссылки ............................................................................................... 125 5 Потребители: извлечение данных ................................. 127 5.1. Пример ....................................................................................... 128 5.1.1. Параметры потребителя ................................................ 129 5.1.2. Наши координаты в потоке событий .......................... 133 5.2. Как взаимодействуют потребители ....................................... 137 5.3. Трассировка ............................................................................... 138 5.3.1. Координатор группы ...................................................... 139 5.3.2. Стратегия назначения разделов ................................... 141 5.4. Маркировка местонахождения ............................................... 142 5.5. Чтение из сжатой темы ............................................................ 145 5.6. Реализация в коде наших заводских требований ................ 145 5.6.1. Варианты чтения ............................................................ 146 5.6.2. Требования ....................................................................... 148 Итоги ................................................................................................. 151 Ссылки ............................................................................................... 151 6 Брокеры ....................................................................... 155 6.1. Знакомство с брокерами .......................................................... 155 6.2. Роль ZooKeeper.......................................................................... 156 6.3. Конфигурационные параметры брокеров ........................... 158 6.3.1. Другие журналы Kafka: журналы приложений ........... 160 6.3.2. Журнал сервера ............................................................... 160 6.3.3. Управление состоянием ................................................. 160 6.4. Ведущие реплики разделов и их роль .................................... 162 6.4.1. Потеря данных ................................................................ 164 6.5. Взгляд внутрь Kafka ................................................................... 165 6.5.1. Обслуживание кластера ................................................. 167 6.5.2. Добавление брокера ....................................................... 167 6.5.3. Обновление кластера ..................................................... 167 6.5.4. Обновление клиентов .................................................... 168 6.5.5. Резервные копии ............................................................. 168 6.6. Примечание о системах с сохранением состояния............. 169 6.7. Упражнение ............................................................................... 171 Итоги ................................................................................................. 172 Ссылки ............................................................................................... 173 Содержание 9
Темы и разделы ............................................................. 176 7.1. Темы ............................................................................................ 176 7.1.1. Параметры создания темы ............................................ 180 7.1.2. Коэффициенты репликации ......................................... 182 7.2. Разделы ....................................................................................... 183 7.2.1. Размещение раздела ........................................................ 183 7.2.2. Просмотр журналов ........................................................ 184 7.3. Тестирование с помощью EmbeddedKafkaCluster ............... 186 7.3.1. Использование Kafka Testcontainers ............................ 188 7.4. Сжатые темы .............................................................................. 188 Итоги ................................................................................................. 191 Ссылки ............................................................................................... 191 8 Kafka как хранилище .................................................... 193 8.1. Как долго можно хранить данные .......................................... 194 8.2. Перемещение данных .............................................................. 195 8.2.1. Сохранение исходных событий ................................... 195 8.2.2. Отказ от пакетного мышления ..................................... 196 8.3. Инструменты ............................................................................. 196 8.3.1. Apache Flume ................................................................... 197 8.3.2. Red Hat® Debezium™ ..................................................... 199 8.3.3. Secor .................................................................................. 200 8.3.4. Пример сохранения данных ......................................... 201 8.4. Возврат данных в Kafka ............................................................ 201 8.4.1. Многоуровневое хранилище ......................................... 203 8.5. Архитектуры с использованием Kafka ................................... 203 8.5.1. Лямбда-архитектура ........................................................ 203 8.5.2. Каппа-архитектура .......................................................... 205 8.6. Окружения с несколькими кластерами ................................. 206 8.6.1. Масштабирование путем добавления кластеров ....... 206 8.7. Варианты хранения в облаке и в контейнерах .................... 207 8.7.1. Кластеры Kubernetes ...................................................... 207 Итоги ................................................................................................. 208 Ссылки ............................................................................................... 208 9 Управление: инструменты и журналы .......................... 211 9.1. Клиенты администрирования ................................................ 212 9.1.1. Решение задач администрирования в коде с помощью AdminClient ................................................. 212 9.1.2. kcat ..................................................................................... 214 9.1.3. Confluent REST Proxy API .............................................. 216 Содержание 10