Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
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 (дата обращения: 27.04.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
9.2. Запуск Kafka как службы systemd ............................................ 217
9.3. Журналы ..................................................................................... 218
9.3.1. Журналы приложений Kafka ......................................... 219
9.3.2. Журналы ZooKeeper ....................................................... 220
9.4. Брандмауэры .............................................................................. 221
9.4.1. Публикуемые слушатели ................................................ 221
9.5. Метрики...................................................................................... 222
9.5.1. Консоль JMX .................................................................... 222
9.6. Способы трассировки .............................................................. 225
9.6.1. Логика на стороне производителя ............................... 226
9.6.2. Логика на стороне потребителя ................................... 228
9.6.3. Переопределение клиентов .......................................... 230
9.7. Общие инструменты мониторинга ........................................ 231
Итоги ................................................................................................. 232
Ссылки ............................................................................................... 232

ЧАСТЬ III. ДОПОЛНИТЕЛЬНЫЕ ВОЗМОЖНОСТИ ... 235

10 Защита Kafka .............................................................. 236

10.1. Основы безопасности ............................................................ 238
10.1.1. Шифрование с помощью SSL ...................................... 239
10.1.2. Настройка соединений SSL между брокерами 
и клиентами ............................................................................... 240
10.1.3. Настройка соединений SSL между брокерами ......... 244
10.2. Kerberos и Simple Authentication  
          and Security Layer (SASL) ........................................................ 244
10.3. Авторизация в Kafka ............................................................... 245
10.3.1. Списки управления доступом ...................................... 246
10.3.2. Управление доступом на основе ролей...................... 247
10.4. ZooKeeper ................................................................................. 248
10.4.1. Настройка Kerberos ...................................................... 248
10.5. Квоты ........................................................................................ 249
10.5.1. Ограничение пропускной способности сети ........... 250
10.5.2. Ограничение частоты запросов ................................. 252
10.6. Данные в состоянии покоя .................................................... 252
10.6.1. Управляемые варианты ................................................ 253
Итоги ................................................................................................. 253
Ссылки ............................................................................................... 254

11 Реестр схем .................................................................. 256

11.1. Предлагаемая модель зрелости Kafka .................................. 257
11.1.1. Уровень 0 ........................................................................ 257

Содержание
11
11.1.2. Уровень 1 ........................................................................ 258
11.1.3. Уровень 2 ........................................................................ 259
11.1.4. Уровень 3 ........................................................................ 259
11.2. Реестр схем .............................................................................. 260
11.2.1. Установка Confluent Schema Registry ......................... 260
11.2.2. Конфигурация реестра ................................................ 261
11.3. Компоненты реестра схем ..................................................... 262
11.3.1. REST API ......................................................................... 262
11.3.2. Клиентская библиотека ............................................... 263
11.4. Правила совместимости ........................................................ 265
11.4.1. Проверка изменений схемы ........................................ 266
11.5. Альтернатива реестру схем ................................................... 267
Итоги ................................................................................................. 268
Ссылки ............................................................................................... 268

12 Потоковая обработка с помощью Kafka Streams  
           и ksqlDB ....................................................................... 270

12.1. Kafka Streams ............................................................................ 271
12.1.1. KStreams API DSL .......................................................... 273
12.1.2. KTable API ....................................................................... 277
12.1.3. GlobalKTable API ........................................................... 278
12.1.4. Processor API .................................................................. 279
12.1.5. Настройка Kafka Streams .............................................. 281
12.2.  ksqlDB: база данных потоковой передачи событий .......... 282
12.2.1. Запросы .......................................................................... 284
12.2.2. Локальная разработка .................................................. 284
12.2.3. Архитектура ksqlDB ...................................................... 286
12.3. Куда пойти дальше .................................................................. 287
12.3.1. Предложения по улучшению Kafka (KIP) ................. 287
12.3.2. Проекты Kafka, которые вы можете исследовать ... 288
12.3.3. Каналы сообщества Slack ............................................. 288
Итоги ................................................................................................. 288
Ссылки ............................................................................................... 289

Приложение A. Установка ..................................................... 290
Приложение B. Пример клиента ........................................... 299
Предметный указатель ......................................................... 304

Содержание
12
Предисловие 
от издательства

Отзывы и пожелания

Мы всегда рады отзывам наших читателей. Расскажите нам, что вы 
думаете об этой книге, – что понравилось или, может быть, не понравилось. 
Отзывы важны для нас, чтобы выпускать книги, которые 
будут для вас максимально полезны.
Вы можете написать отзыв на нашем сайте www.dmkpress.com, зайдя 
на страницу книги и оставив комментарий в разделе «Отзывы и рецензии». 
Также можно послать письмо главному редактору по адресу 
dmkpress@gmail.com; при этом укажите название книги в теме письма.
Если вы являетесь экспертом в какой-либо области и заинтересованы 
в написании новой книги, заполните форму на нашем сайте 
по адресу http://dmkpress.com/authors/publish_book/ или напишите 
в издательство по адресу dmkpress@gmail.com.

Список опечаток

Хотя мы приняли все возможные меры для того, чтобы обеспечить 
высокое качество наших текстов, ошибки все равно случаются. 
Если вы найдете ошибку в одной из наших книг – возможно, ошибку 
в основном тексте или программном коде, – мы будем очень 
благодарны, если вы сообщите нам о ней. Сделав это, вы избавите 
других читателей от недопонимания и поможете нам улучшить последующие 
издания этой книги.
Если вы найдете какие-либо ошибки в коде, пожалуйста, сообщите 
о них главному редактору по адресу dmkpress@gmail.com, и мы 
исправим это в следующих тиражах.

Нарушение авторских прав

Пиратство в интернете по-прежнему остается насущной проблемой. 
Издательство «ДМК Пресс» очень серьезно относится к вопросам 
защиты авторских прав и лицензирования. Если вы столкнетесь 
в интернете с незаконной публикацией какой-либо из наших 
книг, пожалуйста, пришлите нам ссылку на интернет-ресурс, 
чтобы мы могли применить санкции.
Ссылку на подозрительные материалы можно прислать по адресу 
dmkpress@gmail.com.
Мы высоко ценим любую помощь по защите наших авторов, благодаря 
которой мы можем предоставлять вам качественные материалы.
Предисловие

Начиная с первого выпуска, вышедшего в 2011 году, технологии 
Apache Kafka® помогли создать новую категорию систем передачи 
данных, и теперь они являются основой бесчисленного множества 
современных приложений, управляемых событиями. В своей книге 
«Kafka в действии» Дилан Скотт (Dylan Scott), Виктор Гамов (Viktor 
Gamov) и Дейв Клейн (Dave Klein) делятся навыками проектирования 
и реализации приложений на основе событий, реализованных 
с использованием Apache Kafka. Авторы имеют богатый опыт работы 
с Kafka в реальном мире, что выделяет эту книгу среди других.
Давайте на минутку зададимся вопросом: «Зачем вообще нужна 
платформа Kafka?» Исторически сложилось так, что большинство 
приложений были основаны на системах хранения данных. Когда 
в мире происходили какие-то интересные события, они немедленно 
сохранялись в этих системах, но реакция на эти события происходила 
позже – либо когда пользователь явно запрашивал информацию, 
либо в ходе выполнения некоторых заданий пакетной обработки.
В системах передачи данных приложения строятся путем предварительного 
определения того, что они должны делать при появлении 
новых событий. Когда случаются новые события, приложения 
автоматически реагируют на них практически мгновенно. 
Такие приложения, управляемые событиями, привлекательны 
тем, что позволяют предприятиям гораздо быстрее извлекать новую 
информацию из своих данных. Однако переход к приложениям, 
управляемым событиями, требует изменения мышления, что 
не всегда легко. Эта книга предлагает исчерпывающее описание 
событийно-ориентированного мышления, а также реалистичные 
практические примеры, которые вы сможете опробовать.
«Kafka в действии» объясняет, как работает Kafka, и особое внимание 
уделяет созданию комплексных приложений, управляемых 
событиями, на основе Kafka. Здесь вы познакомитесь с компонентами, 
необходимыми для создания простого приложения Kafka, 
а также узнаете, как создавать сложные приложения с использованием 
таких библиотек, как Kafka Streams и ksqlDB. Также в этой 
книге рассказывается, как после создания приложения развернуть 
его в промышленном окружении, и освещаются такие ключевые 
темы, как мониторинг и безопасность.
Я надеюсь, что вам понравится эта книга так же, как мне. Удачной 
передачи событий!

– Юн Рао (Jun Rao), соучредитель Confluent
Вступление

Один из вопросов, который часто задают нам, когда мы рассказываем 
о работе над технической книгой: почему был выбран именно 
формат печатной книги? Дилан, например, всегда предпочитал 
узнавать что-то новое, читая книги. Другой фактор – ностальгия, 
навеваемая воспоминаниями о первой технической книге по программированию, 
которую он прочитал, «Elements of Programming 
with Perl» Эндрю Л. Джонсона (Andrew L. Johnson), выпущенной 
издательством Manning в 2000 году. Эта книга особенно запомнилась 
ему, и он до сих пор вспоминает, насколько приятно было читать 
ее страницы. Мы надеемся доставить такое же удовольствие 
своим читателям, описывая Apache Kafka.
Предвкушение познания чего-то нового почувствовал каждый из 
нас, когда мы впервые начали работать с Kafka. На наш взгляд, Kaf-
ka существенно отличается от любых других брокеров сообщений 
или шин служб предприятия (Enterprise Service Bus, ESB), которые 
нам доводилось использовать раньше. Быстрота разработки производителей 
и потребителей сообщений, возможность повторной 
обработки данных и скорость, с которой независимые потребители 
перемещаются без удаления данных из других потребительских 
приложений, позволяют решать проблемы, встречавшиеся в прошлом, 
и впечатлили нас больше всего, когда мы стали изучать возможность 
применения Kafka.
Мы видим, что Kafka меняет стандарты для платформ данных; она 
способна помочь перенести пакетные рабочие процессы и рабочие 
процессы извлечения, преобразования и загрузки (Extract, Trans-
form, Load, ETL) ближе во времени к потокам данных. Поскольку эта 
платформа отходит от архитектур обработки данных, использовавшихся 
раньше и известных многим корпоративным пользователям, 
мы хотели помочь пользователям, не знакомым с Kafka, научиться работать 
с производителями и потребителями Kafka, а также решать базовые 
задачи разработки и администрирования Kafka. Мы надеемся, 
что к концу этой книги вы почувствуете в себе готовность углубиться 
в исследование более сложных тем Kafka, таких как мониторинг кластеров, 
создание метрик и межсайтовая репликация данных.
Всегда помните, что эта книга запечатлела момент, как Кафка 
выглядит сегодня. Она почти наверняка будет меняться и, надеюсь, 
станет еще лучше к тому времени, когда вы будете читать эту 
работу. Мы верим, что эта книга направит вас на увлекательный 
путь изучения основ Apache Kafka.
Благодарности

Дилан. Прежде всего я хотел бы поблагодарить мою семью. Спасибо 
вам! Я никогда не устану благодарить за поддержку и любовь, 
которые вижу каждый день. Я люблю вас всех! Дэн и Дебби, я высоко 
ценю, что вы всегда были моими самыми преданными сторонниками 
и фанатами. Сара, Харпер и Ноэль, я не смогу на словах 
передать всю любовь и гордость, которую испытываю ко всем вам, 
и благодарность за поддержку, которую вы мне оказываете. Спасибо 
семье DG, что всегда были рядом со мной. Спасибо и вам, JC.
Также отдельное спасибо Виктору Гамову и Дейву Клейну, что были 
соавторами этой книги! В продвижении этого проекта мне также 
помогали мои друзья и коллеги по работе, которых я должен упомянуть: 
команда Team Serenity (Бекки Кэмпбелл (Becky Campbell), Адам 
Доман (Adam Doman), Джейсон Фер (Jason Fehr) и Дэн Рассел (Dan 
Russell)), Роберт Абейта (Robert Abeyta) и Джереми Кастл (Jeremy 
Castle). Спасибо также, Джабулани Симплизио Чибайя (Jabulani Sim-
plisio Chibaya), не только за рецензию, но и за добрые слова.
Виктор. Я хотел бы сказать огромное спасибо моей супруге 
и поблагодарить ее за поддержку. Спасибо также членам команды 
по связям с разработчиками и сообщества Confluent: Але Мюррей 
(Ale Murray), Еве Байзек (Yeva Byzek), Робину Моффатт (Robin 
Moffatt) и Тиму Берглунд (Tim Berglund). Вы все так много делаете 
для сообщества Apache Kafka!
Дейв. Я хотел бы поблагодарить Дилана и Виктора за то, что 
позволили мне поучаствовать в этом захватывающем путешествии.
Все вместе мы благодарим нашего редактора в Manning – Тони 
Арритола (Toni Arritola), чей опыт и наставничество помогли сделать 
эту книгу реальностью. Мы также выражаем благодарность 
Кристен Уоттерсон (Kristen Watterson), которая была нашим первым 
редактором до того, как на смену ей пришел Тони, нашим техническим 
редакторам Рафаэлю Вильеле (Raphael Villela), Ники 
Бакнер (Nickie Buckner), Фелипе Эстебану Вильдосо Кастильо 
(Felipe Esteban Vildoso Castillo), Маюру Патилу (Mayur Patil), Валентину 
Креттазу (Valentin Crettaz) и Уильяму Руденмальму (William 
Rudenmalm). Мы благодарим Чака Ларсона (Chuck Larson) за 
огромную помощь с графикой и Суманта Тамбе (Sumant Tambe) за 
техническую корректировку кода.
Сотрудники издательства Manning оказывали всемерную помощь 
по самым разным вопросам, от производства до продвижения, – это