Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Kafka в действии

Покупка
Артикул: 817214.01.99
Это практическое руководство показывает, как использовать распределенную потоковую платформу Apache Kafka для удовлетворения различных бизнес-требований. Рассказывается, как устроена Kafka и где она может пригодиться на практике; описываются характеристики проектов, в которых может пригодиться эта платформа. Рассматриваются основные ее компоненты — клиенты и кластер, представлены варианты улучшения работающего кластера. Книга адресована разработчикам, желающим ознакомиться с идеей потоковой обработки данных. Для изучения примеров кода понадобятся базовые знания командной строки; желательно иметь навыки программирования на языке Java.
Скотт, Д. Kafka в действии : практическое руководство / Д. Скотт, В. Гамов, Д. Клейн ; пер. с англ. А. Н. Киселева. - Москва : ДМК Пресс, 2022. - 310 с. - ISBN 978-5-93700-118-4. - Текст : электронный. - URL: https://znanium.com/catalog/product/2109488 (дата обращения: 21.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
Дилан Скотт, Виктор Гамов, Дейв Клейн

Предисловие Юна Рао

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