0 added
0 removed
Original
2026-01-01
Modified
2026-02-19
1
<ul><li>/</li>
1
<ul><li>/</li>
2
<li>/</li>
2
<li>/</li>
3
</ul><p>Apache Kafka• 9 апреля 2025 • 10 мин чтения</p>
3
</ul><p>Apache Kafka• 9 апреля 2025 • 10 мин чтения</p>
4
<p><strong>Apache Kafka</strong>- это распределённая платформа обмена сообщениями, созданная для работы с огромными потоками данных в реальном времени. С её помощью компании обмениваются информацией между системами, собирают события, логируют действия пользователей, отслеживают транзакции и строят аналитику в реальном времени. Платформа работает быстро, стабильно и горизонтально масштабируется, что делает её незаменимым инструментом для архитектур типа event-driven.</p>
4
<p><strong>Apache Kafka</strong>- это распределённая платформа обмена сообщениями, созданная для работы с огромными потоками данных в реальном времени. С её помощью компании обмениваются информацией между системами, собирают события, логируют действия пользователей, отслеживают транзакции и строят аналитику в реальном времени. Платформа работает быстро, стабильно и горизонтально масштабируется, что делает её незаменимым инструментом для архитектур типа event-driven.</p>
5
<p>Что такое Kafka и зачем она нужна?</p>
5
<p>Что такое Kafka и зачем она нужна?</p>
6
<p>Представьте крупный интернет-магазин. Клиенты делают заказы, служба доставки отслеживает статусы, аналитика считает конверсии, отдел маркетинга реагирует на поведение пользователей. Все эти действия генерируют события. Kafka превращает их в поток сообщений, который можно обрабатывать, сохранять, фильтровать и передавать между системами в режиме реального времени. При этом данные не теряются, даже если один из компонентов временно "упал".</p>
6
<p>Представьте крупный интернет-магазин. Клиенты делают заказы, служба доставки отслеживает статусы, аналитика считает конверсии, отдел маркетинга реагирует на поведение пользователей. Все эти действия генерируют события. Kafka превращает их в поток сообщений, который можно обрабатывать, сохранять, фильтровать и передавать между системами в режиме реального времени. При этом данные не теряются, даже если один из компонентов временно "упал".</p>
7
<p>Kafka - это не просто "очередь сообщений". Это полноценный брокер событий, способный обрабатывать миллионы сообщений в секунду.</p>
7
<p>Kafka - это не просто "очередь сообщений". Это полноценный брокер событий, способный обрабатывать миллионы сообщений в секунду.</p>
8
<p><strong>Она хорошо подходит для:</strong></p>
8
<p><strong>Она хорошо подходит для:</strong></p>
9
<ul><li>потоковой аналитики (stream processing),</li>
9
<ul><li>потоковой аналитики (stream processing),</li>
10
<li>построения ETL-конвейеров,</li>
10
<li>построения ETL-конвейеров,</li>
11
<li>микросервисных архитектур,</li>
11
<li>микросервисных архитектур,</li>
12
<li>журналирования (логгирования),</li>
12
<li>журналирования (логгирования),</li>
13
<li>передачи сообщений между приложениями и модулями.</li>
13
<li>передачи сообщений между приложениями и модулями.</li>
14
</ul><p>В современных системах Kafka занимает центральное место как посредник между источниками данных (приложениями, сенсорами, логами) и потребителями (базами, аналитическими платформами, алертингом).</p>
14
</ul><p>В современных системах Kafka занимает центральное место как посредник между источниками данных (приложениями, сенсорами, логами) и потребителями (базами, аналитическими платформами, алертингом).</p>
15
<h3>Как работает Apache Kafka</h3>
15
<h3>Как работает Apache Kafka</h3>
16
<p>Архитектура строится вокруг понятий:</p>
16
<p>Архитектура строится вокруг понятий:</p>
17
<ul><li><strong>Брокер Kafka</strong>- сервер, принимающий и раздающий сообщения;</li>
17
<ul><li><strong>Брокер Kafka</strong>- сервер, принимающий и раздающий сообщения;</li>
18
<li><strong>Продюсер (producer)</strong>- источник данных, который отправляет сообщения;</li>
18
<li><strong>Продюсер (producer)</strong>- источник данных, который отправляет сообщения;</li>
19
<li><strong>Консьюмер (consumer)</strong>- получатель сообщений;</li>
19
<li><strong>Консьюмер (consumer)</strong>- получатель сообщений;</li>
20
<li><strong>Топик (topic)</strong>- логическая категория сообщений, по сути, "канал";</li>
20
<li><strong>Топик (topic)</strong>- логическая категория сообщений, по сути, "канал";</li>
21
<li><strong>Партиция (partition)</strong>- часть топика, физически разделённая для масштабируемости;</li>
21
<li><strong>Партиция (partition)</strong>- часть топика, физически разделённая для масштабируемости;</li>
22
<li><strong>ZooKeeper</strong>- сервис координации, необходимый для управления кворумом и брокерами (в версиях до Kafka 3.x).</li>
22
<li><strong>ZooKeeper</strong>- сервис координации, необходимый для управления кворумом и брокерами (в версиях до Kafka 3.x).</li>
23
</ul><p>Kafka сохраняет сообщения в партициях на диск, и каждый консьюмер может читать их с любой позиции. Это значит, что один поток можно обрабатывать параллельно несколькими сервисами без риска потерь или дублирования.</p>
23
</ul><p>Kafka сохраняет сообщения в партициях на диск, и каждый консьюмер может читать их с любой позиции. Это значит, что один поток можно обрабатывать параллельно несколькими сервисами без риска потерь или дублирования.</p>
24
<p>С момента выпуска в 2011 году платформа стала стандартом для real-time потоковой обработки. Её используют LinkedIn, Netflix, Uber, Яндекс и тысячи других компаний.</p>
24
<p>С момента выпуска в 2011 году платформа стала стандартом для real-time потоковой обработки. Её используют LinkedIn, Netflix, Uber, Яндекс и тысячи других компаний.</p>
25
<h3>Почему стоит изучать Kafka сейчас</h3>
25
<h3>Почему стоит изучать Kafka сейчас</h3>
26
<p>Микросервисы, big data, IoT, машинное обучение - все эти направления требуют обмена данными без задержек. Платформа идеально ложится в этот стек. Она способна выдерживать колоссальную нагрузку и при этом сохраняет данные надёжно и предсказуемо.</p>
26
<p>Микросервисы, big data, IoT, машинное обучение - все эти направления требуют обмена данными без задержек. Платформа идеально ложится в этот стек. Она способна выдерживать колоссальную нагрузку и при этом сохраняет данные надёжно и предсказуемо.</p>
27
<p>Новичку может показаться, что настроить и запустить это решение сложно. Но это не так - нужно лишь понять базовую логику и правильно развернуть компоненты. Эта статья расскажет, как установить Apache Kafka, как её настроить и с чего начать запуск.</p>
27
<p>Новичку может показаться, что настроить и запустить это решение сложно. Но это не так - нужно лишь понять базовую логику и правильно развернуть компоненты. Эта статья расскажет, как установить Apache Kafka, как её настроить и с чего начать запуск.</p>
28
<p><strong>Вы научитесь:</strong></p>
28
<p><strong>Вы научитесь:</strong></p>
29
<ul><li>Устанавливать Kafka на Windows, Ubuntu, macOS;</li>
29
<ul><li>Устанавливать Kafka на Windows, Ubuntu, macOS;</li>
30
<li>Разворачивать Kafka в Docker;</li>
30
<li>Разворачивать Kafka в Docker;</li>
31
<li>Настраивать окружение: JAVA_HOME, KAFKA_HOME;</li>
31
<li>Настраивать окружение: JAVA_HOME, KAFKA_HOME;</li>
32
<li>Работать с ZooKeeper и systemd;</li>
32
<li>Работать с ZooKeeper и systemd;</li>
33
<li>Поднимать Kafka-сервер и отправлять первые сообщения;</li>
33
<li>Поднимать Kafka-сервер и отправлять первые сообщения;</li>
34
<li>Разбираться, как работает kafka-server-start.sh и другие команды.</li>
34
<li>Разбираться, как работает kafka-server-start.sh и другие команды.</li>
35
</ul><p><strong>✅</strong>Кстати, если вы давно хотели разобраться в брокерах сообщений - сейчас самое время.<strong>Kafka уже вошла в стандартную IT-сборку крупных проектов, и умение с ней работать добавит веса в любом резюме.</strong></p>
35
</ul><p><strong>✅</strong>Кстати, если вы давно хотели разобраться в брокерах сообщений - сейчас самое время.<strong>Kafka уже вошла в стандартную IT-сборку крупных проектов, и умение с ней работать добавит веса в любом резюме.</strong></p>
36
<p>Дальше мы разберёмся с системными требованиями, а затем по шагам пройдём через установку на всех популярных платформах, включая Docker. В конце статьи вы получите работающую Kafka-систему, готовую к тестированию и развитию.</p>
36
<p>Дальше мы разберёмся с системными требованиями, а затем по шагам пройдём через установку на всех популярных платформах, включая Docker. В конце статьи вы получите работающую Kafka-систему, готовую к тестированию и развитию.</p>
37
<h3>Основные компоненты и файлы</h3>
37
<h3>Основные компоненты и файлы</h3>
38
<p>Перед тем как перейти к практике, важно понять структуру и ключевые файлы дистрибутива Apache Kafka. После загрузки вы получите архив, содержащий директории:</p>
38
<p>Перед тем как перейти к практике, важно понять структуру и ключевые файлы дистрибутива Apache Kafka. После загрузки вы получите архив, содержащий директории:</p>
39
<ul><li>/bin - здесь лежат исполняемые скрипты, например kafka-server-start.sh, kafka-topics.sh, zookeeper-server-start.sh.</li>
39
<ul><li>/bin - здесь лежат исполняемые скрипты, например kafka-server-start.sh, kafka-topics.sh, zookeeper-server-start.sh.</li>
40
<li>/config - конфигурационные файлы Kafka и ZooKeeper (server.properties, zookeeper.properties и др.).</li>
40
<li>/config - конфигурационные файлы Kafka и ZooKeeper (server.properties, zookeeper.properties и др.).</li>
41
<li>/libs - библиотеки Java, необходимые для работы сервера.</li>
41
<li>/libs - библиотеки Java, необходимые для работы сервера.</li>
42
<li>/logs - каталог логов.</li>
42
<li>/logs - каталог логов.</li>
43
<li>/data - в некоторых сборках может быть создана директория хранения сообщений.</li>
43
<li>/data - в некоторых сборках может быть создана директория хранения сообщений.</li>
44
</ul><p><strong>Это важно: Kafka</strong>-<strong>это Java-приложение</strong>. Значит, перед запуском вам потребуется установленная Java версии 8 и выше (JDK, не JRE). Также желательно настроить переменные среды: JAVA_HOME и KAFKA_HOME.</p>
44
</ul><p><strong>Это важно: Kafka</strong>-<strong>это Java-приложение</strong>. Значит, перед запуском вам потребуется установленная Java версии 8 и выше (JDK, не JRE). Также желательно настроить переменные среды: JAVA_HOME и KAFKA_HOME.</p>
45
<h3>Kafka без ZooKeeper?</h3>
45
<h3>Kafka без ZooKeeper?</h3>
46
<p>В последних версиях системы появился режим KRaft (Kafka Raft), который позволяет запускать<strong>Kafka без ZooKeeper</strong>. Он упрощает архитектуру, снижает количество компонентов и точек отказа. Однако:</p>
46
<p>В последних версиях системы появился режим KRaft (Kafka Raft), который позволяет запускать<strong>Kafka без ZooKeeper</strong>. Он упрощает архитектуру, снижает количество компонентов и точек отказа. Однако:</p>
47
<ul><li>Поддержка KRaft по-прежнему развивается.</li>
47
<ul><li>Поддержка KRaft по-прежнему развивается.</li>
48
<li>Большинство документации и статей (включая референсы) ориентированы на классическую схему с ZooKeeper.</li>
48
<li>Большинство документации и статей (включая референсы) ориентированы на классическую схему с ZooKeeper.</li>
49
</ul><p><strong>В рамках этой статьи мы рассмотрим оба подхода: с ZooKeeper и в Docker-сценарии - без него.</strong></p>
49
</ul><p><strong>В рамках этой статьи мы рассмотрим оба подхода: с ZooKeeper и в Docker-сценарии - без него.</strong></p>
50
<h3>Что понадобится для установки</h3>
50
<h3>Что понадобится для установки</h3>
51
<p>Чтобы установить Apache Kafka, нужно:</p>
51
<p>Чтобы установить Apache Kafka, нужно:</p>
52
<ul><li>Скачать дистрибутив с официального сайта или через менеджер пакетов;</li>
52
<ul><li>Скачать дистрибутив с официального сайта или через менеджер пакетов;</li>
53
<li>Убедиться в наличии Java (JDK);</li>
53
<li>Убедиться в наличии Java (JDK);</li>
54
<li>Подготовить переменные окружения;</li>
54
<li>Подготовить переменные окружения;</li>
55
<li>Настроить конфигурационные файлы;</li>
55
<li>Настроить конфигурационные файлы;</li>
56
<li>Запустить ZooKeeper (если используется);</li>
56
<li>Запустить ZooKeeper (если используется);</li>
57
<li>Запустить Kafka-брокер;</li>
57
<li>Запустить Kafka-брокер;</li>
58
<li>Создать топик;</li>
58
<li>Создать топик;</li>
59
<li>Проверить отправку и получение сообщений.</li>
59
<li>Проверить отправку и получение сообщений.</li>
60
</ul><p>В нашем боте-помощнике вы найдете полезную информацию по установке и работе с кластером из одного брокера</p>
60
</ul><p>В нашем боте-помощнике вы найдете полезную информацию по установке и работе с кластером из одного брокера</p>
61
<p>Дарим туториал по основам Apache Kafka</p>
61
<p>Дарим туториал по основам Apache Kafka</p>
62
<p>В зависимости от операционной системы эти шаги могут немного отличаться.<strong>Далее мы подробно рассмотрим установку на:</strong></p>
62
<p>В зависимости от операционной системы эти шаги могут немного отличаться.<strong>Далее мы подробно рассмотрим установку на:</strong></p>
63
<ul><li><strong>Windows;</strong></li>
63
<ul><li><strong>Windows;</strong></li>
64
<li><strong>Ubuntu;</strong></li>
64
<li><strong>Ubuntu;</strong></li>
65
<li><strong>macOS;</strong></li>
65
<li><strong>macOS;</strong></li>
66
<li><strong>через Docker</strong>- самый простой путь, если нужен локальный стенд без лишней мороки.</li>
66
<li><strong>через Docker</strong>- самый простой путь, если нужен локальный стенд без лишней мороки.</li>
67
</ul><h3>Что вы получите в итоге</h3>
67
</ul><h3>Что вы получите в итоге</h3>
68
<p>После выполнения инструкции вы:</p>
68
<p>После выполнения инструкции вы:</p>
69
<ul><li>Развернёте локальный Kafka-брокер;</li>
69
<ul><li>Развернёте локальный Kafka-брокер;</li>
70
<li>Настроите его под свою ОС;</li>
70
<li>Настроите его под свою ОС;</li>
71
<li>Научитесь создавать топики и передавать сообщения;</li>
71
<li>Научитесь создавать топики и передавать сообщения;</li>
72
<li>Поймёте,<strong>как запустить Kafka</strong>, как она обрабатывает потоки и как ей управлять через CLI.</li>
72
<li>Поймёте,<strong>как запустить Kafka</strong>, как она обрабатывает потоки и как ей управлять через CLI.</li>
73
</ul><p><strong>Если вы новичок - не переживайте</strong>: шаги даны последовательно, объяснены термины и приведены примеры.</p>
73
</ul><p><strong>Если вы новичок - не переживайте</strong>: шаги даны последовательно, объяснены термины и приведены примеры.</p>
74
<p>💡<strong>Совет</strong>: сохраняйте скрипты и команды, которые будете использовать. Это поможет быстрее разворачивать систему в будущем и автоматизировать установку.</p>
74
<p>💡<strong>Совет</strong>: сохраняйте скрипты и команды, которые будете использовать. Это поможет быстрее разворачивать систему в будущем и автоматизировать установку.</p>
75
<h3>Немного об опыте: Kafka в реальных проектах</h3>
75
<h3>Немного об опыте: Kafka в реальных проектах</h3>
76
<p>Решение применяется не только в highload-сервисах.<strong>Его используют для</strong>:</p>
76
<p>Решение применяется не только в highload-сервисах.<strong>Его используют для</strong>:</p>
77
<ul><li>систем мониторинга (например, метрики Prometheus через Kafka в ClickHouse),</li>
77
<ul><li>систем мониторинга (например, метрики Prometheus через Kafka в ClickHouse),</li>
78
<li>обработки логов (Logstash → Kafka → Elasticsearch),</li>
78
<li>обработки логов (Logstash → Kafka → Elasticsearch),</li>
79
<li>распределённых очередей (например, в микросервисах с Java и Spring Boot),</li>
79
<li>распределённых очередей (например, в микросервисах с Java и Spring Boot),</li>
80
<li>потоковой агрегации данных в финансовых системах.</li>
80
<li>потоковой агрегации данных в финансовых системах.</li>
81
</ul><p><strong>Пример</strong>: один из банков использует Kafka для отслеживания транзакций в реальном времени, реагируя на события быстрее, чем это позволяла старая очередь на RabbitMQ.</p>
81
</ul><p><strong>Пример</strong>: один из банков использует Kafka для отслеживания транзакций в реальном времени, реагируя на события быстрее, чем это позволяла старая очередь на RabbitMQ.</p>
82
<p>Такие примеры показывают, что знание этой платформы - не просто теория, а навык, который нужен в боевых условиях.</p>
82
<p>Такие примеры показывают, что знание этой платформы - не просто теория, а навык, который нужен в боевых условиях.</p>
83
<p><strong>Хотите стать гуру равномерного распределения нагрузки?</strong>На курсе<a>"Apache Kafka База"</a>расскажем, как работать с платформой, как настраивать распределенный отказоустойчивый кластер и отслеживать метрики.</p>
83
<p><strong>Хотите стать гуру равномерного распределения нагрузки?</strong>На курсе<a>"Apache Kafka База"</a>расскажем, как работать с платформой, как настраивать распределенный отказоустойчивый кластер и отслеживать метрики.</p>
84
<p>Готовы приступить к установке? Начнём с самого базового:<strong>что нужно, чтобы система "потянула" эту систему.</strong></p>
84
<p>Готовы приступить к установке? Начнём с самого базового:<strong>что нужно, чтобы система "потянула" эту систему.</strong></p>
85
<p>Системные требования</p>
85
<p>Системные требования</p>
86
<p>Перед тем как перейти к установке Apache Kafka, важно понять, какие ресурсы необходимы для её стабильной работы. Платформа не требует сверхмощного оборудования, но некоторые требования желательно учитывать - особенно если вы планируете развернуть полноценный кластер или подключать Kafka к продакшн-сервисам.</p>
86
<p>Перед тем как перейти к установке Apache Kafka, важно понять, какие ресурсы необходимы для её стабильной работы. Платформа не требует сверхмощного оборудования, но некоторые требования желательно учитывать - особенно если вы планируете развернуть полноценный кластер или подключать Kafka к продакшн-сервисам.</p>
87
<h3>Минимальные системные требования</h3>
87
<h3>Минимальные системные требования</h3>
88
<p>Для тестовой установки или локального стенда достаточно следующей конфигурации:</p>
88
<p>Для тестовой установки или локального стенда достаточно следующей конфигурации:</p>
89
<ul><li><strong>Процессор</strong>: 2 ядра (x86_64 или ARM64)</li>
89
<ul><li><strong>Процессор</strong>: 2 ядра (x86_64 или ARM64)</li>
90
<li><strong>Оперативная память</strong>: от 4 ГБ (рекомендуется 8 ГБ для одновременного запуска ZooKeeper и Kafka)</li>
90
<li><strong>Оперативная память</strong>: от 4 ГБ (рекомендуется 8 ГБ для одновременного запуска ZooKeeper и Kafka)</li>
91
<li><strong>Диск</strong>: минимум 5 ГБ свободного пространства</li>
91
<li><strong>Диск</strong>: минимум 5 ГБ свободного пространства</li>
92
<li><strong>Java</strong>: JDK 8, 11 или 17 (Kafka поддерживает Java 8+, но лучше использовать актуальную LTS-версию)</li>
92
<li><strong>Java</strong>: JDK 8, 11 или 17 (Kafka поддерживает Java 8+, но лучше использовать актуальную LTS-версию)</li>
93
</ul><p>Для продакшн-сценариев рекомендуются более высокие параметры, особенно по оперативной памяти и скорости дисков (желательно SSD). Система интенсивно использует дисковую подсистему, так как сохраняет все сообщения на диск.</p>
93
</ul><p>Для продакшн-сценариев рекомендуются более высокие параметры, особенно по оперативной памяти и скорости дисков (желательно SSD). Система интенсивно использует дисковую подсистему, так как сохраняет все сообщения на диск.</p>
94
<h3>Программные зависимости</h3>
94
<h3>Программные зависимости</h3>
95
<p>Apache Kafka работает на Java и не требует специфической ОС. Вы можете развернуть её на:</p>
95
<p>Apache Kafka работает на Java и не требует специфической ОС. Вы можете развернуть её на:</p>
96
<ul><li>Windows (от Windows 10 и выше),</li>
96
<ul><li>Windows (от Windows 10 и выше),</li>
97
<li>Linux (Ubuntu, CentOS, Debian),</li>
97
<li>Linux (Ubuntu, CentOS, Debian),</li>
98
<li>macOS (от Catalina 10.15).</li>
98
<li>macOS (от Catalina 10.15).</li>
99
</ul><p>Платформа не зависит от конкретной ОС, но в<strong>Linux-среде работать с ней проще и стабильнее</strong>, особенно при автоматизации запуска и настройки.</p>
99
</ul><p>Платформа не зависит от конкретной ОС, но в<strong>Linux-среде работать с ней проще и стабильнее</strong>, особенно при автоматизации запуска и настройки.</p>
100
<p>Для запуска потребуется:</p>
100
<p>Для запуска потребуется:</p>
101
<ul><li><strong>Java JDK</strong>- убедитесь, что установлена полная Java-разработка, а не только JRE.</li>
101
<ul><li><strong>Java JDK</strong>- убедитесь, что установлена полная Java-разработка, а не только JRE.</li>
102
<li><strong>ZooKeeper</strong>(если используете классическую архитектуру Kafka до версии 3.x);</li>
102
<li><strong>ZooKeeper</strong>(если используете классическую архитектуру Kafka до версии 3.x);</li>
103
<li><strong>Переменные окружения</strong>: JAVA_HOME, KAFKA_HOME;</li>
103
<li><strong>Переменные окружения</strong>: JAVA_HOME, KAFKA_HOME;</li>
104
<li><strong>Bash-совместимый терминал</strong>(особенно актуально для macOS и Linux).</li>
104
<li><strong>Bash-совместимый терминал</strong>(особенно актуально для macOS и Linux).</li>
105
</ul><h3>Программные зависимости</h3>
105
</ul><h3>Программные зависимости</h3>
106
<p>Apache Kafka работает на Java и не требует специфической ОС. Вы можете развернуть её на:</p>
106
<p>Apache Kafka работает на Java и не требует специфической ОС. Вы можете развернуть её на:</p>
107
<ul><li>Windows (от Windows 10 и выше),</li>
107
<ul><li>Windows (от Windows 10 и выше),</li>
108
<li>Linux (Ubuntu, CentOS, Debian),</li>
108
<li>Linux (Ubuntu, CentOS, Debian),</li>
109
<li>macOS (от Catalina 10.15).</li>
109
<li>macOS (от Catalina 10.15).</li>
110
</ul><p>Платформа не зависит от конкретной ОС, но в Linux-среде работать с ней проще и стабильнее, особенно при автоматизации запуска и настройки.</p>
110
</ul><p>Платформа не зависит от конкретной ОС, но в Linux-среде работать с ней проще и стабильнее, особенно при автоматизации запуска и настройки.</p>
111
<p><strong>Для запуска потребуется:</strong></p>
111
<p><strong>Для запуска потребуется:</strong></p>
112
<ul><li>Java JDK - убедитесь, что установлена полная Java-разработка, а не только JRE.</li>
112
<ul><li>Java JDK - убедитесь, что установлена полная Java-разработка, а не только JRE.</li>
113
<li>ZooKeeper (если используете классическую архитектуру Kafka до версии 3.x);</li>
113
<li>ZooKeeper (если используете классическую архитектуру Kafka до версии 3.x);</li>
114
<li>Переменные окружения: JAVA_HOME, KAFKA_HOME;</li>
114
<li>Переменные окружения: JAVA_HOME, KAFKA_HOME;</li>
115
<li>Bash-совместимый терминал (особенно актуально для macOS и Linux).</li>
115
<li>Bash-совместимый терминал (особенно актуально для macOS и Linux).</li>
116
</ul><h3>Требования к сети</h3>
116
</ul><h3>Требования к сети</h3>
117
<p>Решение активно взаимодействует с внешними сервисами и клиентами. Поэтому убедитесь, что:</p>
117
<p>Решение активно взаимодействует с внешними сервисами и клиентами. Поэтому убедитесь, что:</p>
118
<ul><li>Открыты нужные порты:</li>
118
<ul><li>Открыты нужные порты:</li>
119
<li>2181 - для ZooKeeper;</li>
119
<li>2181 - для ZooKeeper;</li>
120
<li>9092 - для Kafka по умолчанию;</li>
120
<li>9092 - для Kafka по умолчанию;</li>
121
<li>Не конфликтуют службы с аналогичными портами;</li>
121
<li>Не конфликтуют службы с аналогичными портами;</li>
122
<li>Локальный hostname или IP указан корректно в конфигурации (advertised.listeners), иначе консьюмеры не смогут подключаться.</li>
122
<li>Локальный hostname или IP указан корректно в конфигурации (advertised.listeners), иначе консьюмеры не смогут подключаться.</li>
123
</ul><h3>Поддержка Docker</h3>
123
</ul><h3>Поддержка Docker</h3>
124
<p>Если вы не хотите устанавливать Kafka и ZooKeeper вручную, используйте Docker. Он упрощает запуск, особенно при работе с микросервисами и временными стендами.</p>
124
<p>Если вы не хотите устанавливать Kafka и ZooKeeper вручную, используйте Docker. Он упрощает запуск, особенно при работе с микросервисами и временными стендами.</p>
125
<p><strong>Плюсы запуска через Docker:</strong></p>
125
<p><strong>Плюсы запуска через Docker:</strong></p>
126
<ul><li>Быстрый старт;</li>
126
<ul><li>Быстрый старт;</li>
127
<li>Не требует настройки окружения;</li>
127
<li>Не требует настройки окружения;</li>
128
<li>Легко разворачивать несколько брокеров;</li>
128
<li>Легко разворачивать несколько брокеров;</li>
129
<li>Можно интегрировать с Docker Compose.</li>
129
<li>Можно интегрировать с Docker Compose.</li>
130
</ul><p>Мы подробно разберём этот способ в одном из следующих разделов.</p>
130
</ul><p>Мы подробно разберём этот способ в одном из следующих разделов.</p>
131
<h3>Kafka в облаке</h3>
131
<h3>Kafka в облаке</h3>
132
<p>Платформу можно разворачивать не только локально. Все крупные облачные провайдеры предлагают готовые managed-решения:</p>
132
<p>Платформу можно разворачивать не только локально. Все крупные облачные провайдеры предлагают готовые managed-решения:</p>
133
<ul><li><strong>Confluent Cloud -</strong>официальный сервис от разработчиков Kafka<strong>;</strong></li>
133
<ul><li><strong>Confluent Cloud -</strong>официальный сервис от разработчиков Kafka<strong>;</strong></li>
134
<li><strong>AWS MSK (Managed Streaming for Apache Kafka);</strong></li>
134
<li><strong>AWS MSK (Managed Streaming for Apache Kafka);</strong></li>
135
<li><strong>Azure Event Hubs (с поддержкой протокола Kafka);</strong></li>
135
<li><strong>Azure Event Hubs (с поддержкой протокола Kafka);</strong></li>
136
<li><strong>Google Cloud Pub/Sub (совместимость с Kafka-экосистемой).</strong></li>
136
<li><strong>Google Cloud Pub/Sub (совместимость с Kafka-экосистемой).</strong></li>
137
</ul><p>Для обучения и отладки рекомендуется сначала выполнить локальную установку, а уже потом пробовать кластерные и облачные варианты.</p>
137
</ul><p>Для обучения и отладки рекомендуется сначала выполнить локальную установку, а уже потом пробовать кластерные и облачные варианты.</p>
138
<p>Теперь, когда мы определились с требованиями, можно переходить к практике. Начнём с самой распространённой ОС<strong>- Windows</strong>.</p>
138
<p>Теперь, когда мы определились с требованиями, можно переходить к практике. Начнём с самой распространённой ОС<strong>- Windows</strong>.</p>
139
<p><strong>Установка и настройка на Windows</strong></p>
139
<p><strong>Установка и настройка на Windows</strong></p>
140
<p>Хотя Apache Kafka изначально создавалась для Linux, развернуть её на Windows тоже возможно. Особенно если вы хотите попробовать брокер сообщений локально, без виртуальных машин и Docker-контейнеров.</p>
140
<p>Хотя Apache Kafka изначально создавалась для Linux, развернуть её на Windows тоже возможно. Особенно если вы хотите попробовать брокер сообщений локально, без виртуальных машин и Docker-контейнеров.</p>
141
<p><strong>Шаг 1: Установка Java (JDK)</strong></p>
141
<p><strong>Шаг 1: Установка Java (JDK)</strong></p>
142
<p>Kafka работает на Java, поэтому первым делом нужно установить JDK.</p>
142
<p>Kafka работает на Java, поэтому первым делом нужно установить JDK.</p>
143
<ol><li>Скачайте последнюю LTS-версию JDK с сайта<a>https://adoptium.net</a>или<a>https://jdk.java.net</a>.</li>
143
<ol><li>Скачайте последнюю LTS-версию JDK с сайта<a>https://adoptium.net</a>или<a>https://jdk.java.net</a>.</li>
144
<li>Установите JDK и пропишите переменную окружения JAVA_HOME:</li>
144
<li>Установите JDK и пропишите переменную окружения JAVA_HOME:</li>
145
</ol><ul><li>Откройте<strong>Свойства системы</strong><strong>→ Переменные среды.</strong></li>
145
</ol><ul><li>Откройте<strong>Свойства системы</strong><strong>→ Переменные среды.</strong></li>
146
<li>Добавьте JAVA_HOME со значением пути к установленному JDK (например, C:\Program Files\Java\jdk-17).</li>
146
<li>Добавьте JAVA_HOME со значением пути к установленному JDK (например, C:\Program Files\Java\jdk-17).</li>
147
<li>В переменную Path добавьте %JAVA_HOME%\bin.</li>
147
<li>В переменную Path добавьте %JAVA_HOME%\bin.</li>
148
</ul><p><strong>Проверьте в терминале:</strong></p>
148
</ul><p><strong>Проверьте в терминале:</strong></p>
149
<p>Если выводится версия JDK - всё готово.</p>
149
<p>Если выводится версия JDK - всё готово.</p>
150
<p><strong>Шаг 2: Скачивание и распаковка</strong></p>
150
<p><strong>Шаг 2: Скачивание и распаковка</strong></p>
151
<ol><li>Перейдите на<a>"официальный сайт Kafka"</a>.</li>
151
<ol><li>Перейдите на<a>"официальный сайт Kafka"</a>.</li>
152
<li>Скачайте архив<strong>Binary downloads</strong>с поддержкой Scala (обычно kafka_2.13-x.x.x.tgz).</li>
152
<li>Скачайте архив<strong>Binary downloads</strong>с поддержкой Scala (обычно kafka_2.13-x.x.x.tgz).</li>
153
<li>Распакуйте архив в любую директорию, например: C:\kafka.</li>
153
<li>Распакуйте архив в любую директорию, например: C:\kafka.</li>
154
</ol><p><strong>⚠️ Название папки не должно содержать пробелов или русских букв.</strong></p>
154
</ol><p><strong>⚠️ Название папки не должно содержать пробелов или русских букв.</strong></p>
155
<p><strong>Шаг 3: Настройка переменных окружения (по желанию)</strong></p>
155
<p><strong>Шаг 3: Настройка переменных окружения (по желанию)</strong></p>
156
<p>Чтобы удобно запускать систему из любого места, пропишите переменную KAFKA_HOME:</p>
156
<p>Чтобы удобно запускать систему из любого места, пропишите переменную KAFKA_HOME:</p>
157
<ol><li>Добавьте KAFKA_HOME = C:\kafka</li>
157
<ol><li>Добавьте KAFKA_HOME = C:\kafka</li>
158
<li>В Path добавьте:</li>
158
<li>В Path добавьте:</li>
159
</ol><p><strong>Шаг 4: Запуск ZooKeeper и Kafka</strong></p>
159
</ol><p><strong>Шаг 4: Запуск ZooKeeper и Kafka</strong></p>
160
<p>В классической схеме Kafka зависит от ZooKeeper, поэтому сначала запускается он. Перейдите в папку bin/windows и запустите ZooKeeper:</p>
160
<p>В классической схеме Kafka зависит от ZooKeeper, поэтому сначала запускается он. Перейдите в папку bin/windows и запустите ZooKeeper:</p>
161
<p>zookeeper-server-start.bat ..\..\config\zookeeper.properties</p>
161
<p>zookeeper-server-start.bat ..\..\config\zookeeper.properties</p>
162
<p>Откройте новое окно терминала и запустите Kafka:</p>
162
<p>Откройте новое окно терминала и запустите Kafka:</p>
163
<p>kafka-server-start.bat ..\..\config\server.properties</p>
163
<p>kafka-server-start.bat ..\..\config\server.properties</p>
164
<p>Если всё прошло успешно, в терминале появится сообщение Kafka started.</p>
164
<p>Если всё прошло успешно, в терминале появится сообщение Kafka started.</p>
165
<p><strong>Шаг 5: Создание топика</strong></p>
165
<p><strong>Шаг 5: Создание топика</strong></p>
166
<p>После запуска можно создать топик - логическую категорию сообщений:</p>
166
<p>После запуска можно создать топик - логическую категорию сообщений:</p>
167
<p>kafka-topics.bat --create --topic test --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1</p>
167
<p>kafka-topics.bat --create --topic test --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1</p>
168
<p>Проверьте, что топик создан:</p>
168
<p>Проверьте, что топик создан:</p>
169
<p>kafka-topics.bat --list --bootstrap-server localhost:9092</p>
169
<p>kafka-topics.bat --list --bootstrap-server localhost:9092</p>
170
<p><strong>Шаг 6: Отправка и получение сообщений</strong></p>
170
<p><strong>Шаг 6: Отправка и получение сообщений</strong></p>
171
<p>kafka-console-producer.bat --broker-list localhost:9092 --topic test</p>
171
<p>kafka-console-producer.bat --broker-list localhost:9092 --topic test</p>
172
<p>Введите сообщение и нажмите Enter.</p>
172
<p>Введите сообщение и нажмите Enter.</p>
173
<p><strong>Запуск консьюмера:</strong></p>
173
<p><strong>Запуск консьюмера:</strong></p>
174
<p>kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning</p>
174
<p>kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning</p>
175
<p>Вы увидите отправленные сообщения.</p>
175
<p>Вы увидите отправленные сообщения.</p>
176
<p>Возможные ошибки и решения</p>
176
<p>Возможные ошибки и решения</p>
177
<ul><li>Missing JAVA_HOME - убедитесь, что переменная окружения прописана.</li>
177
<ul><li>Missing JAVA_HOME - убедитесь, что переменная окружения прописана.</li>
178
<li><strong>Порты 2181 или 9092 заняты</strong>- остановите другие процессы.</li>
178
<li><strong>Порты 2181 или 9092 заняты</strong>- остановите другие процессы.</li>
179
<li><strong>Kafka не запускается</strong>- проверьте версию Java и корректность путей.</li>
179
<li><strong>Kafka не запускается</strong>- проверьте версию Java и корректность путей.</li>
180
</ul><p><strong>🛠️ Совет:</strong>создайте .bat-файлы с командами запуска, чтобы не вводить их вручную.</p>
180
</ul><p><strong>🛠️ Совет:</strong>создайте .bat-файлы с командами запуска, чтобы не вводить их вручную.</p>
181
<p>Теперь вы знаете,<strong>как установить Apache Kafka на Windows</strong>и выполнить базовую настройку. Переходим к Ubuntu.</p>
181
<p>Теперь вы знаете,<strong>как установить Apache Kafka на Windows</strong>и выполнить базовую настройку. Переходим к Ubuntu.</p>
182
<p>Установка и настройка на Ubuntu</p>
182
<p>Установка и настройка на Ubuntu</p>
183
<p>Установка Kafka на Ubuntu - один из самых стабильных и удобных способов для локальной разработки. Здесь меньше ограничений, чем в Windows, а управление сервисами можно полностью автоматизировать через systemd.</p>
183
<p>Установка Kafka на Ubuntu - один из самых стабильных и удобных способов для локальной разработки. Здесь меньше ограничений, чем в Windows, а управление сервисами можно полностью автоматизировать через systemd.</p>
184
<p>Шаг 1: Обновление системы и установка Java</p>
184
<p>Шаг 1: Обновление системы и установка Java</p>
185
<p>Платформа требует установленной Java (JDK). Установим OpenJDK 11, подходящую для Kafka 2.x и 3.x.</p>
185
<p>Платформа требует установленной Java (JDK). Установим OpenJDK 11, подходящую для Kafka 2.x и 3.x.</p>
186
<p>sudo apt update && sudo apt upgrade -ysudo apt install openjdk-11-jdk -y</p>
186
<p>sudo apt update && sudo apt upgrade -ysudo apt install openjdk-11-jdk -y</p>
187
<p>Проверьте установку:</p>
187
<p>Проверьте установку:</p>
188
<p>java -version</p>
188
<p>java -version</p>
189
<p>Шаг 2: Загрузка</p>
189
<p>Шаг 2: Загрузка</p>
190
<p>Перейдите на официальный сайт<a>"kafka.apache.org/downloads"</a>и скопируйте ссылку на нужную версию. Затем скачайте архив через wget:</p>
190
<p>Перейдите на официальный сайт<a>"kafka.apache.org/downloads"</a>и скопируйте ссылку на нужную версию. Затем скачайте архив через wget:</p>
191
<p>wget https://downloads.apache.org/kafka/3.6.0/kafka_2.13-3.6.0.tgz</p>
191
<p>wget https://downloads.apache.org/kafka/3.6.0/kafka_2.13-3.6.0.tgz</p>
192
<p>Распакуйте архив:</p>
192
<p>Распакуйте архив:</p>
193
<p>tar -xvzf kafka_2.13-3.6.0.tgzmv kafka_2.13-3.6.0 /opt/kafka</p>
193
<p>tar -xvzf kafka_2.13-3.6.0.tgzmv kafka_2.13-3.6.0 /opt/kafka</p>
194
<p>Шаг 3: Проверка переменной окружения JAVA_HOME</p>
194
<p>Шаг 3: Проверка переменной окружения JAVA_HOME</p>
195
<p>Убедитесь, что JAVA_HOME прописана. Добавьте её в .bashrc:</p>
195
<p>Убедитесь, что JAVA_HOME прописана. Добавьте её в .bashrc:</p>
196
<p>echo "export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which javac))))" >> ~/.bashrcecho "export PATH=\$PATH:\$JAVA_HOME/bin" >> ~/.bashrcsource ~/.bashrc</p>
196
<p>echo "export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which javac))))" >> ~/.bashrcecho "export PATH=\$PATH:\$JAVA_HOME/bin" >> ~/.bashrcsource ~/.bashrc</p>
197
<p>Шаг 4: Запуск ZooKeeper и Kafka вручную</p>
197
<p>Шаг 4: Запуск ZooKeeper и Kafka вручную</p>
198
<p>Помним, что ZooKeeper запускается первым:</p>
198
<p>Помним, что ZooKeeper запускается первым:</p>
199
<p>/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties</p>
199
<p>/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties</p>
200
<p>Откройте новый терминал и запустите Kafka-брокер:</p>
200
<p>Откройте новый терминал и запустите Kafka-брокер:</p>
201
<p>/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties</p>
201
<p>/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties</p>
202
<p>Шаг 5: Создание топика</p>
202
<p>Шаг 5: Создание топика</p>
203
<p>/opt/kafka/bin/kafka-topics.sh --create --topic test --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1</p>
203
<p>/opt/kafka/bin/kafka-topics.sh --create --topic test --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1</p>
204
<p>Проверьте:</p>
204
<p>Проверьте:</p>
205
<p>/opt/kafka/bin/kafka-topics.sh --list --bootstrap-server localhost:9092</p>
205
<p>/opt/kafka/bin/kafka-topics.sh --list --bootstrap-server localhost:9092</p>
206
<p>Шаг 6: Отправка и получение сообщений</p>
206
<p>Шаг 6: Отправка и получение сообщений</p>
207
<p><strong>Продюсер:</strong></p>
207
<p><strong>Продюсер:</strong></p>
208
<p>/opt/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test</p>
208
<p>/opt/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test</p>
209
<p><strong>Консьюмер:</strong></p>
209
<p><strong>Консьюмер:</strong></p>
210
<p>/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning</p>
210
<p>/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning</p>
211
<p>Шаг 7 (опционально): Автозапуск через systemd</p>
211
<p>Шаг 7 (опционально): Автозапуск через systemd</p>
212
<p>Создайте юнит-файлы:</p>
212
<p>Создайте юнит-файлы:</p>
213
<p>sudo nano /etc/systemd/system/zookeeper.service</p>
213
<p>sudo nano /etc/systemd/system/zookeeper.service</p>
214
<p>Вставьте:</p>
214
<p>Вставьте:</p>
215
<p>[Unit]Description=Apache ZooKeeperAfter=network.target</p>
215
<p>[Unit]Description=Apache ZooKeeperAfter=network.target</p>
216
<p>[Service]</p>
216
<p>[Service]</p>
217
<p>Type=simpleExecStart=/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.propertiesExecStop=/opt/kafka/bin/zookeeper-server-stop.shRestart=on-abnormal</p>
217
<p>Type=simpleExecStart=/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.propertiesExecStop=/opt/kafka/bin/zookeeper-server-stop.shRestart=on-abnormal</p>
218
<p>[Install]</p>
218
<p>[Install]</p>
219
<p>WantedBy=multi-user.target</p>
219
<p>WantedBy=multi-user.target</p>
220
<p>Аналогично создайте kafka.service:</p>
220
<p>Аналогично создайте kafka.service:</p>
221
<p>sudo nano /etc/systemd/system/kafka.service</p>
221
<p>sudo nano /etc/systemd/system/kafka.service</p>
222
<p>[Unit]Description=Apache KafkaAfter=zookeeper.service</p>
222
<p>[Unit]Description=Apache KafkaAfter=zookeeper.service</p>
223
<p>[Service]Type=simpleExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.propertiesExecStop=/opt/kafka/bin/kafka-server-stop.shRestart=on-abnormal</p>
223
<p>[Service]Type=simpleExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.propertiesExecStop=/opt/kafka/bin/kafka-server-stop.shRestart=on-abnormal</p>
224
<p>[Install]WantedBy=multi-user.target</p>
224
<p>[Install]WantedBy=multi-user.target</p>
225
<p>Активируйте сервисы:</p>
225
<p>Активируйте сервисы:</p>
226
<p>sudo systemctl daemon-reexecsudo systemctl enable zookeeper kafkasudo systemctl start zookeepersudo systemctl start kafka</p>
226
<p>sudo systemctl daemon-reexecsudo systemctl enable zookeeper kafkasudo systemctl start zookeepersudo systemctl start kafka</p>
227
<p>Всё готово к работе. Теперь вы знаете,<strong>как поднять Kafka на Ubuntu</strong>вручную или через systemd. Далее - установка на macOS.</p>
227
<p>Всё готово к работе. Теперь вы знаете,<strong>как поднять Kafka на Ubuntu</strong>вручную или через systemd. Далее - установка на macOS.</p>
228
<p><strong>Установка и настройка на macOS</strong></p>
228
<p><strong>Установка и настройка на macOS</strong></p>
229
<p>Установка Apache Kafka на macOS проще всего через Homebrew. Это быстро, удобно и хорошо подходит для локальной разработки. Ниже - пошаговая инструкция для запуска Kafka с ZooKeeper на macOS.</p>
229
<p>Установка Apache Kafka на macOS проще всего через Homebrew. Это быстро, удобно и хорошо подходит для локальной разработки. Ниже - пошаговая инструкция для запуска Kafka с ZooKeeper на macOS.</p>
230
<p>Шаг 1: Установка Homebrew (если не установлен)</p>
230
<p>Шаг 1: Установка Homebrew (если не установлен)</p>
231
<p>Откройте терминал и выполните:</p>
231
<p>Откройте терминал и выполните:</p>
232
<p>/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"</p>
232
<p>/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"</p>
233
<p>Проверьте установку:</p>
233
<p>Проверьте установку:</p>
234
<p>brew --version</p>
234
<p>brew --version</p>
235
<p>Шаг 2: Установка Kafka и ZooKeeper</p>
235
<p>Шаг 2: Установка Kafka и ZooKeeper</p>
236
<p>Установим Kafka вместе с зависимостями:</p>
236
<p>Установим Kafka вместе с зависимостями:</p>
237
<p>brew install kafka</p>
237
<p>brew install kafka</p>
238
<p>Homebrew установит Kafka и ZooKeeper в стандартные директории и автоматически добавит бинарные файлы в PATH.</p>
238
<p>Homebrew установит Kafka и ZooKeeper в стандартные директории и автоматически добавит бинарные файлы в PATH.</p>
239
<p>Шаг 3: Запуск ZooKeeper</p>
239
<p>Шаг 3: Запуск ZooKeeper</p>
240
<p>Вам всё ещё требуется ZooKeeper, если вы не используете режим KRaft. Запустите его через brew:</p>
240
<p>Вам всё ещё требуется ZooKeeper, если вы не используете режим KRaft. Запустите его через brew:</p>
241
<p>brew services start zookeeper</p>
241
<p>brew services start zookeeper</p>
242
<p>Проверьте статус:</p>
242
<p>Проверьте статус:</p>
243
<p>brew services list</p>
243
<p>brew services list</p>
244
<p>Шаг 4: Запуск Kafka</p>
244
<p>Шаг 4: Запуск Kafka</p>
245
<p>После запуска ZooKeeper включаем нашу платформу:</p>
245
<p>После запуска ZooKeeper включаем нашу платформу:</p>
246
<p>brew services start kafka</p>
246
<p>brew services start kafka</p>
247
<p>Вы также можете выполнить ручной запуск:</p>
247
<p>Вы также можете выполнить ручной запуск:</p>
248
<p>kafka-server-start /opt/homebrew/etc/kafka/server.properties</p>
248
<p>kafka-server-start /opt/homebrew/etc/kafka/server.properties</p>
249
<p>Шаг 5: Создание топика</p>
249
<p>Шаг 5: Создание топика</p>
250
<p>kafka-topics --create --topic test --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1</p>
250
<p>kafka-topics --create --topic test --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1</p>
251
<p>Проверим наличие:</p>
251
<p>Проверим наличие:</p>
252
<p>kafka-topics --list --bootstrap-server localhost:9092</p>
252
<p>kafka-topics --list --bootstrap-server localhost:9092</p>
253
<p>Шаг 6: Тестовый обмен сообщениями</p>
253
<p>Шаг 6: Тестовый обмен сообщениями</p>
254
<p><strong>Продюсер:</strong></p>
254
<p><strong>Продюсер:</strong></p>
255
<p>kafka-console-producer --broker-list localhost:9092 --topic test</p>
255
<p>kafka-console-producer --broker-list localhost:9092 --topic test</p>
256
<p><strong>Консьюмер:</strong></p>
256
<p><strong>Консьюмер:</strong></p>
257
<p>kafka-console-consumer --bootstrap-server localhost:9092 --topic test --from-beginning</p>
257
<p>kafka-console-consumer --bootstrap-server localhost:9092 --topic test --from-beginning</p>
258
<p><strong>Шаг 7: Управление сервисами</strong></p>
258
<p><strong>Шаг 7: Управление сервисами</strong></p>
259
<p>Остановить Kafka и ZooKeeper можно командой:</p>
259
<p>Остановить Kafka и ZooKeeper можно командой:</p>
260
<p>brew services stop kafkabrew services stop zookeeper</p>
260
<p>brew services stop kafkabrew services stop zookeeper</p>
261
<p>Если вы хотите отключить автозапуск:</p>
261
<p>Если вы хотите отключить автозапуск:</p>
262
<p>brew services remove kafkabrew services remove zookeeper</p>
262
<p>brew services remove kafkabrew services remove zookeeper</p>
263
<p>Примечания</p>
263
<p>Примечания</p>
264
<ul><li>Решение работает на Java, убедитесь, что у вас установлен JDK 11 или выше. Если нет - установите через brew:</li>
264
<ul><li>Решение работает на Java, убедитесь, что у вас установлен JDK 11 или выше. Если нет - установите через brew:</li>
265
</ul><p>brew install openjdk@11</p>
265
</ul><p>brew install openjdk@11</p>
266
<ul><li>Убедитесь, что в PATH добавлены Kafka-утилиты. Обычно Homebrew делает это автоматически, но можно добавить вручную:</li>
266
<ul><li>Убедитесь, что в PATH добавлены Kafka-утилиты. Обычно Homebrew делает это автоматически, но можно добавить вручную:</li>
267
</ul><p>export PATH="/opt/homebrew/bin:$PATH"</p>
267
</ul><p>export PATH="/opt/homebrew/bin:$PATH"</p>
268
<p>Kafka успешно развернута на macOS. Это одна из самых простых платформ для локального тестирования брокеров сообщений. Далее - установка через Docker.</p>
268
<p>Kafka успешно развернута на macOS. Это одна из самых простых платформ для локального тестирования брокеров сообщений. Далее - установка через Docker.</p>
269
<p><strong>Установка и настройка в Docker</strong></p>
269
<p><strong>Установка и настройка в Docker</strong></p>
270
<p>Если не хочется возиться с установкой Java, конфигурацией ZooKeeper и путями, проще всего развернуть Kafka в Docker. Этот способ подойдёт как для локального тестирования, так и для развёртывания на сервере без сложной подготовки среды.</p>
270
<p>Если не хочется возиться с установкой Java, конфигурацией ZooKeeper и путями, проще всего развернуть Kafka в Docker. Этот способ подойдёт как для локального тестирования, так и для развёртывания на сервере без сложной подготовки среды.</p>
271
<p>Шаг 1: Установка Docker</p>
271
<p>Шаг 1: Установка Docker</p>
272
<p>Если Docker ещё не установлен, скачайте его с<strong><a>"официального сайта"</a></strong>и установите в системе.</p>
272
<p>Если Docker ещё не установлен, скачайте его с<strong><a>"официального сайта"</a></strong>и установите в системе.</p>
273
<p>Проверьте установку:</p>
273
<p>Проверьте установку:</p>
274
<p>docker --version</p>
274
<p>docker --version</p>
275
<p>Шаг 2: Запуск Kafka и ZooKeeper в Docker через команду</p>
275
<p>Шаг 2: Запуск Kafka и ZooKeeper в Docker через команду</p>
276
<p>Требуется ZooKeeper. Самый быстрый способ - поднять оба сервиса через одну команду:</p>
276
<p>Требуется ZooKeeper. Самый быстрый способ - поднять оба сервиса через одну команду:</p>
277
<p>docker run -d --name zookeeper \-e ALLOW_ANONYMOUS_LOGIN=yes \-p 2181:2181 \bitnami/zookeeper:latest</p>
277
<p>docker run -d --name zookeeper \-e ALLOW_ANONYMOUS_LOGIN=yes \-p 2181:2181 \bitnami/zookeeper:latest</p>
278
<p>Затем запустим Kafka, привязав её к ZooKeeper:</p>
278
<p>Затем запустим Kafka, привязав её к ZooKeeper:</p>
279
<p>docker run -d --name kafka \-e KAFKA_BROKER_ID=1 \-e KAFKA_ZOOKEEPER_CONNECT=host.docker.internal:2181 \-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 \-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \-p 9092:9092 \bitnami/kafka:latest</p>
279
<p>docker run -d --name kafka \-e KAFKA_BROKER_ID=1 \-e KAFKA_ZOOKEEPER_CONNECT=host.docker.internal:2181 \-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 \-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \-p 9092:9092 \bitnami/kafka:latest</p>
280
<p>Если вы на Linux, замените host.docker.internal на IP вашей машины (172.17.0.1 или localhost).</p>
280
<p>Если вы на Linux, замените host.docker.internal на IP вашей машины (172.17.0.1 или localhost).</p>
281
<p>Шаг 3: Проверка работы</p>
281
<p>Шаг 3: Проверка работы</p>
282
<p>Убедитесь, что оба контейнера работают:</p>
282
<p>Убедитесь, что оба контейнера работают:</p>
283
<p>docker ps</p>
283
<p>docker ps</p>
284
<p>Вы увидите bitnami/zookeeper и bitnami/kafka в списке запущенных контейнеров.</p>
284
<p>Вы увидите bitnami/zookeeper и bitnami/kafka в списке запущенных контейнеров.</p>
285
<p>Шаг 4: Взаимодействие внутри контейнера</p>
285
<p>Шаг 4: Взаимодействие внутри контейнера</p>
286
<p>Подключимся к Kafka-контейнеру:</p>
286
<p>Подключимся к Kafka-контейнеру:</p>
287
<p>docker exec -it kafka bash</p>
287
<p>docker exec -it kafka bash</p>
288
<p>Создание топика:</p>
288
<p>Создание топика:</p>
289
<p>kafka-topics.sh --create --topic test --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1</p>
289
<p>kafka-topics.sh --create --topic test --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1</p>
290
<p>Проверка:</p>
290
<p>Проверка:</p>
291
<p>kafka-topics.sh --list --bootstrap-server localhost:9092</p>
291
<p>kafka-topics.sh --list --bootstrap-server localhost:9092</p>
292
<p>Запуск продюсера:</p>
292
<p>Запуск продюсера:</p>
293
<p>kafka-console-producer.sh --broker-list localhost:9092 --topic test</p>
293
<p>kafka-console-producer.sh --broker-list localhost:9092 --topic test</p>
294
<p>Запуск консьюмера:</p>
294
<p>Запуск консьюмера:</p>
295
<p>kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning</p>
295
<p>kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning</p>
296
<p>Шаг 5: Docker Compose (альтернатива)</p>
296
<p>Шаг 5: Docker Compose (альтернатива)</p>
297
<p>Можно использовать docker-compose.yml, чтобы управлять системой проще. Создайте файл:</p>
297
<p>Можно использовать docker-compose.yml, чтобы управлять системой проще. Создайте файл:</p>
298
<p>version: '3'services: zookeeper: image: bitnami/zookeeper:latest ports: - "2181:2181" environment: - ALLOW_ANONYMOUS_LOGIN=yes</p>
298
<p>version: '3'services: zookeeper: image: bitnami/zookeeper:latest ports: - "2181:2181" environment: - ALLOW_ANONYMOUS_LOGIN=yes</p>
299
<p>kafka: image: bitnami/kafka:latest ports: - "9092:9092" environment: - KAFKA_BROKER_ID=1 - KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 - KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 depends_on: - zookeeper</p>
299
<p>kafka: image: bitnami/kafka:latest ports: - "9092:9092" environment: - KAFKA_BROKER_ID=1 - KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 - KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 depends_on: - zookeeper</p>
300
<p>Запустите:</p>
300
<p>Запустите:</p>
301
<p>docker-compose up -d</p>
301
<p>docker-compose up -d</p>
302
<p>Kafka и ZooKeeper будут запущены в изолированной сети, и вы сможете легко ими управлять.</p>
302
<p>Kafka и ZooKeeper будут запущены в изолированной сети, и вы сможете легко ими управлять.</p>
303
<p>💡<strong>Docker</strong>- лучший способ для быстрого развёртывания на локальной машине, особенно если вы не хотите вручную ставить Java и настраивать конфиги. Работает одинаково хорошо на Windows, macOS и Linux.</p>
303
<p>💡<strong>Docker</strong>- лучший способ для быстрого развёртывания на локальной машине, особенно если вы не хотите вручную ставить Java и настраивать конфиги. Работает одинаково хорошо на Windows, macOS и Linux.</p>
304
<p>Теперь, когда Kafka работает в контейнере, переходим к настройке пользователей.</p>
304
<p>Теперь, когда Kafka работает в контейнере, переходим к настройке пользователей.</p>
305
<p><strong>Начните бесплатно изучать работу с Apache Kafka!</strong>Дарим демодоступ к обучению на 3 дня, чтобы вы познакомились с материалами и спикерами курса.</p>
305
<p><strong>Начните бесплатно изучать работу с Apache Kafka!</strong>Дарим демодоступ к обучению на 3 дня, чтобы вы познакомились с материалами и спикерами курса.</p>
306
<p>Создание пользователя</p>
306
<p>Создание пользователя</p>
307
<p>Apache Kafka может работать в режиме с ограниченным доступом, где каждый клиент - будь то продюсер или консьюмер - аутентифицируется и авторизуется. Это важно, если вы планируете использовать систему в команде или продакшене. На локальных стендах этот шаг можно пропустить, но для практики и понимания процесса он полезен.</p>
307
<p>Apache Kafka может работать в режиме с ограниченным доступом, где каждый клиент - будь то продюсер или консьюмер - аутентифицируется и авторизуется. Это важно, если вы планируете использовать систему в команде или продакшене. На локальных стендах этот шаг можно пропустить, но для практики и понимания процесса он полезен.</p>
308
<p>Зачем вообще создавать пользователей?</p>
308
<p>Зачем вообще создавать пользователей?</p>
309
<p>Kafka поддерживает механизмы:</p>
309
<p>Kafka поддерживает механизмы:</p>
310
<ul><li><strong>SASL/PLAIN</strong>- простая аутентификация по логину и паролю;</li>
310
<ul><li><strong>SASL/PLAIN</strong>- простая аутентификация по логину и паролю;</li>
311
<li><strong>SASL/SCRAM</strong>- хешированная схема хранения паролей;</li>
311
<li><strong>SASL/SCRAM</strong>- хешированная схема хранения паролей;</li>
312
<li><strong>SSL</strong>- обмен ключами и сертификатами;</li>
312
<li><strong>SSL</strong>- обмен ключами и сертификатами;</li>
313
<li><strong>ACL (Access Control Lists)</strong>- контроль прав доступа на уровне топиков и ресурсов.</li>
313
<li><strong>ACL (Access Control Lists)</strong>- контроль прав доступа на уровне топиков и ресурсов.</li>
314
</ul><p>В этом разделе покажем, как<strong>добавить пользователя и включить базовую защиту через SASL/PLAIN</strong></p>
314
</ul><p>В этом разделе покажем, как<strong>добавить пользователя и включить базовую защиту через SASL/PLAIN</strong></p>
315
<p>Шаг 1: Включение SASL в конфиге Kafka</p>
315
<p>Шаг 1: Включение SASL в конфиге Kafka</p>
316
<p>Откройте файл:</p>
316
<p>Откройте файл:</p>
317
<p>/opt/kafka/config/server.properties</p>
317
<p>/opt/kafka/config/server.properties</p>
318
<p>Добавьте или раскомментируйте:</p>
318
<p>Добавьте или раскомментируйте:</p>
319
<p>listeners=SASL_PLAINTEXT://:9092advertised.listeners=SASL_PLAINTEXT://localhost:9092security.inter.broker.protocol=SASL_PLAINTEXTsasl.mechanism.inter.broker.protocol=PLAINsasl.enabled.mechanisms=PLAINauthorizer.class.name=kafka.security.auth.SimpleAclAuthorizersuper.users=User:admin</p>
319
<p>listeners=SASL_PLAINTEXT://:9092advertised.listeners=SASL_PLAINTEXT://localhost:9092security.inter.broker.protocol=SASL_PLAINTEXTsasl.mechanism.inter.broker.protocol=PLAINsasl.enabled.mechanisms=PLAINauthorizer.class.name=kafka.security.auth.SimpleAclAuthorizersuper.users=User:admin</p>
320
<p>Шаг 2: Добавление паролей пользователей</p>
320
<p>Шаг 2: Добавление паролей пользователей</p>
321
<p>Создайте файл kafka_server_jaas.conf:</p>
321
<p>Создайте файл kafka_server_jaas.conf:</p>
322
<p>KafkaServer { org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin-secret" user_admin="admin-secret" user_user1="user1-secret";};</p>
322
<p>KafkaServer { org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin-secret" user_admin="admin-secret" user_user1="user1-secret";};</p>
323
<p>Здесь user_user1 - наш пользователь.</p>
323
<p>Здесь user_user1 - наш пользователь.</p>
324
<p>Шаг 3: Подключение JAAS-файла</p>
324
<p>Шаг 3: Подключение JAAS-файла</p>
325
<p>Добавьте путь к kafka_server_jaas.conf в переменную окружения:</p>
325
<p>Добавьте путь к kafka_server_jaas.conf в переменную окружения:</p>
326
<p>export KAFKA_OPTS="-Djava.security.auth.login.config=/opt/kafka/config/kafka_server_jaas.conf"</p>
326
<p>export KAFKA_OPTS="-Djava.security.auth.login.config=/opt/kafka/config/kafka_server_jaas.conf"</p>
327
<p>Это можно прописать в systemd-юните или запускном скрипте Kafka.</p>
327
<p>Это можно прописать в systemd-юните или запускном скрипте Kafka.</p>
328
<p><strong>Шаг 4: Перезапуск</strong></p>
328
<p><strong>Шаг 4: Перезапуск</strong></p>
329
<p>Остановите и запустите Kafka с учётом настроек:</p>
329
<p>Остановите и запустите Kafka с учётом настроек:</p>
330
<p>systemctl restart kafka</p>
330
<p>systemctl restart kafka</p>
331
<p>Или вручную:</p>
331
<p>Или вручную:</p>
332
<p>/opt/kafka/bin/kafka-server-stop.sh/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties</p>
332
<p>/opt/kafka/bin/kafka-server-stop.sh/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties</p>
333
<p><strong>Шаг 5: Проверка авторизации клиента</strong></p>
333
<p><strong>Шаг 5: Проверка авторизации клиента</strong></p>
334
<p>Создайте аналогичный файл для клиента:</p>
334
<p>Создайте аналогичный файл для клиента:</p>
335
<p>KafkaClient { org.apache.kafka.common.security.plain.PlainLoginModule required username="user1" password="user1-secret";};</p>
335
<p>KafkaClient { org.apache.kafka.common.security.plain.PlainLoginModule required username="user1" password="user1-secret";};</p>
336
<p>И при запуске консольных утилит укажите его:</p>
336
<p>И при запуске консольных утилит укажите его:</p>
337
<p>KAFKA_OPTS="-Djava.security.auth.login.config=/opt/kafka/config/kafka_client_jaas.conf" \kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning \--consumer.config /opt/kafka/config/client.properties</p>
337
<p>KAFKA_OPTS="-Djava.security.auth.login.config=/opt/kafka/config/kafka_client_jaas.conf" \kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning \--consumer.config /opt/kafka/config/client.properties</p>
338
<p>Файл client.properties должен содержать:</p>
338
<p>Файл client.properties должен содержать:</p>
339
<p>security.protocol=SASL_PLAINTEXTsasl.mechanism=PLAIN</p>
339
<p>security.protocol=SASL_PLAINTEXTsasl.mechanism=PLAIN</p>
340
<p>Теперь вы знаете,<strong>как создать пользователя</strong>, защитить соединение и управлять доступом. Это особенно важно при масштабировании и работе в командах.</p>
340
<p>Теперь вы знаете,<strong>как создать пользователя</strong>, защитить соединение и управлять доступом. Это особенно важно при масштабировании и работе в командах.</p>
341
<p>Следующий шаг - подготовка файлов и папок. Переходим к загрузке дистрибутива.</p>
341
<p>Следующий шаг - подготовка файлов и папок. Переходим к загрузке дистрибутива.</p>
342
<p>Загрузка файлов</p>
342
<p>Загрузка файлов</p>
343
<p>Перед тем как запустить Kafka, нужно загрузить дистрибутив и разложить файлы по нужным директориям. В большинстве случаев это делается вручную: вы скачиваете архив, распаковываете его и указываете путь в переменных окружения.</p>
343
<p>Перед тем как запустить Kafka, нужно загрузить дистрибутив и разложить файлы по нужным директориям. В большинстве случаев это делается вручную: вы скачиваете архив, распаковываете его и указываете путь в переменных окружения.</p>
344
<p>Где скачать</p>
344
<p>Где скачать</p>
345
<p>Официальный источник -<strong><a>"сайт Apache Kafka"</a></strong>:</p>
345
<p>Официальный источник -<strong><a>"сайт Apache Kafka"</a></strong>:</p>
346
<p>Выбирайте версию, совместимую с вашей версией Scala и Java. Рекомендуется скачивать<strong>binary builds with Scala 2.13</strong>, так как они чаще всего используются.</p>
346
<p>Выбирайте версию, совместимую с вашей версией Scala и Java. Рекомендуется скачивать<strong>binary builds with Scala 2.13</strong>, так как они чаще всего используются.</p>
347
<p>Пример команды для Linux или macOS</p>
347
<p>Пример команды для Linux или macOS</p>
348
<p>wget https://downloads.apache.org/kafka/3.6.0/kafka_2.13-3.6.0.tgztar -xvzf kafka_2.13-3.6.0.tgzsudo mv kafka_2.13-3.6.0 /opt/kafka</p>
348
<p>wget https://downloads.apache.org/kafka/3.6.0/kafka_2.13-3.6.0.tgztar -xvzf kafka_2.13-3.6.0.tgzsudo mv kafka_2.13-3.6.0 /opt/kafka</p>
349
<p><strong>Пример для Windows</strong></p>
349
<p><strong>Пример для Windows</strong></p>
350
<ol><li>Перейдите<strong><a>"по ссылке"</a></strong></li>
350
<ol><li>Перейдите<strong><a>"по ссылке"</a></strong></li>
351
<li>Скачайте архив .tgz</li>
351
<li>Скачайте архив .tgz</li>
352
<li>Распакуйте его с помощью 7-Zip или встроенного архиватора</li>
352
<li>Распакуйте его с помощью 7-Zip или встроенного архиватора</li>
353
<li>Поместите папку в C:\kafka или другую директорию без пробелов в названии</li>
353
<li>Поместите папку в C:\kafka или другую директорию без пробелов в названии</li>
354
</ol><p>Структура папки Kafka</p>
354
</ol><p>Структура папки Kafka</p>
355
<p>После распаковки вы получите примерно такую структуру:</p>
355
<p>После распаковки вы получите примерно такую структуру:</p>
356
<p>kafka_2.13-3.6.0/├── bin/├── config/├── libs/├── logs/└── site-docs/</p>
356
<p>kafka_2.13-3.6.0/├── bin/├── config/├── libs/├── logs/└── site-docs/</p>
357
<ul><li>bin/ - исполняемые скрипты для запуска Kafka, ZooKeeper, создания топиков и др.</li>
357
<ul><li>bin/ - исполняемые скрипты для запуска Kafka, ZooKeeper, создания топиков и др.</li>
358
<li>config/ - конфигурационные файлы: server.properties, zookeeper.properties</li>
358
<li>config/ - конфигурационные файлы: server.properties, zookeeper.properties</li>
359
<li>logs/ - логи работы брокера</li>
359
<li>logs/ - логи работы брокера</li>
360
<li>libs/ - зависимости Java</li>
360
<li>libs/ - зависимости Java</li>
361
</ul><p><strong>Рекомендации</strong></p>
361
</ul><p><strong>Рекомендации</strong></p>
362
<ul><li>Убедитесь, что у вас достаточно свободного места (минимум 2-3 ГБ).</li>
362
<ul><li>Убедитесь, что у вас достаточно свободного места (минимум 2-3 ГБ).</li>
363
<li>Не размещайте Kafka в папках с кириллическими символами или пробелами.</li>
363
<li>Не размещайте Kafka в папках с кириллическими символами или пробелами.</li>
364
<li>При использовании Docker загрузка архива не требуется - всё работает через образы.</li>
364
<li>При использовании Docker загрузка архива не требуется - всё работает через образы.</li>
365
</ul><p>⚡ На этом этапе система уже скачана, распакована и готова к запуску. Осталось лишь немного настроить - и можно переходить к тестированию.</p>
365
</ul><p>⚡ На этом этапе система уже скачана, распакована и готова к запуску. Осталось лишь немного настроить - и можно переходить к тестированию.</p>
366
<p>Заключение</p>
366
<p>Заключение</p>
367
<p>Apache Kafka - мощный инструмент для передачи данных в реальном времени. Несмотря на репутацию сложной системы, на практике она устанавливается и настраивается за полчаса - особенно если вы работаете локально или через Docker.</p>
367
<p>Apache Kafka - мощный инструмент для передачи данных в реальном времени. Несмотря на репутацию сложной системы, на практике она устанавливается и настраивается за полчаса - особенно если вы работаете локально или через Docker.</p>
368
<p><strong>Мы разобрали:</strong></p>
368
<p><strong>Мы разобрали:</strong></p>
369
<ul><li><strong>как установить</strong>на Windows, Ubuntu, macOS;</li>
369
<ul><li><strong>как установить</strong>на Windows, Ubuntu, macOS;</li>
370
<li>как поднять Kafka через Docker без лишних зависимостей;</li>
370
<li>как поднять Kafka через Docker без лишних зависимостей;</li>
371
<li>базовую архитектуру и назначение компонентов;</li>
371
<li>базовую архитектуру и назначение компонентов;</li>
372
<li><strong>как настроить Kafka</strong>для передачи сообщений;</li>
372
<li><strong>как настроить Kafka</strong>для передачи сообщений;</li>
373
<li><strong>как запустить систему</strong>, создать топик, передать данные;</li>
373
<li><strong>как запустить систему</strong>, создать топик, передать данные;</li>
374
<li>основы авторизации с помощью SASL/PLAIN;</li>
374
<li>основы авторизации с помощью SASL/PLAIN;</li>
375
<li>требования к системе и особенности запуска с systemd.</li>
375
<li>требования к системе и особенности запуска с systemd.</li>
376
</ul><p>Теперь у вас на руках все инструменты, чтобы самостоятельно<strong>развернуть Kafka</strong>, экспериментировать с её возможностями и начать строить потоковую архитектуру.</p>
376
</ul><p>Теперь у вас на руках все инструменты, чтобы самостоятельно<strong>развернуть Kafka</strong>, экспериментировать с её возможностями и начать строить потоковую архитектуру.</p>
377
<p>⚙️<strong>Kafka открывает двери в мир больших данных, микросервисов и real-time аналитики</strong>. Даже если вы не планируете становиться DevOps-инженером - умение работать с Kafka даст вам серьёзное преимущество.</p>
377
<p>⚙️<strong>Kafka открывает двери в мир больших данных, микросервисов и real-time аналитики</strong>. Даже если вы не планируете становиться DevOps-инженером - умение работать с Kafka даст вам серьёзное преимущество.</p>
378
<p><strong>Если вы дочитали до этого момента - значит, готовы двигаться дальше.</strong><strong>Следующий шаг - попробовать на практике</strong>. Разверните Kafka, создайте пару топиков, подключите простенький микросервис или Python-скрипт и понаблюдайте, как всё работает в реальном времени.</p>
378
<p><strong>Если вы дочитали до этого момента - значит, готовы двигаться дальше.</strong><strong>Следующий шаг - попробовать на практике</strong>. Разверните Kafka, создайте пару топиков, подключите простенький микросервис или Python-скрипт и понаблюдайте, как всё работает в реальном времени.</p>
379
<p>📌 Читайте блог Слёрма</p>
379
<p>📌 Читайте блог Слёрма</p>
380
<p><strong>Если тема оказалась вам полезной - обязательно загляните в другие статьи блога slurm.io</strong>. Мы регулярно публикуем гайды по DevOps, микросервисам, Kubernetes и облачным технологиям.</p>
380
<p><strong>Если тема оказалась вам полезной - обязательно загляните в другие статьи блога slurm.io</strong>. Мы регулярно публикуем гайды по DevOps, микросервисам, Kubernetes и облачным технологиям.</p>
381
<p>✅<strong>Хотите научиться работать с Kafka в продакшене</strong>? Следите за нашими курсами и воркшопами - в них вы научитесь не только настраивать эту платформу, но и строить отказоустойчивые кластеры, подключать мониторинг и интегрировать её в CI/CD-пайплайны.</p>
381
<p>✅<strong>Хотите научиться работать с Kafka в продакшене</strong>? Следите за нашими курсами и воркшопами - в них вы научитесь не только настраивать эту платформу, но и строить отказоустойчивые кластеры, подключать мониторинг и интегрировать её в CI/CD-пайплайны.</p>
382
<h3><strong>Статью подготовили</strong></h3>
382
<h3><strong>Статью подготовили</strong></h3>
383
<p>Понравилась статья? Будем рады вашему лайку и репосту - вдруг кому-то тоже пригодится:)</p>
383
<p>Понравилась статья? Будем рады вашему лайку и репосту - вдруг кому-то тоже пригодится:)</p>
384
<h3><strong>Читайте также:</strong></h3>
384
<h3><strong>Читайте также:</strong></h3>
385
385