HTML Diff
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 &amp;&amp; sudo apt upgrade -ysudo apt install openjdk-11-jdk -y</p>
186 <p>sudo apt update &amp;&amp; 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))))" &gt;&gt; ~/.bashrcecho "export PATH=\$PATH:\$JAVA_HOME/bin" &gt;&gt; ~/.bashrcsource ~/.bashrc</p>
196 <p>echo "export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which javac))))" &gt;&gt; ~/.bashrcecho "export PATH=\$PATH:\$JAVA_HOME/bin" &gt;&gt; ~/.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