Apache Kafka• 9 апреля 2025 • 10 мин чтения
Apache Kafka — это распределённая платформа обмена сообщениями, созданная для работы с огромными потоками данных в реальном времени. С её помощью компании обмениваются информацией между системами, собирают события, логируют действия пользователей, отслеживают транзакции и строят аналитику в реальном времени. Платформа работает быстро, стабильно и горизонтально масштабируется, что делает её незаменимым инструментом для архитектур типа event-driven.
Что такое Kafka и зачем она нужна?
Представьте крупный интернет-магазин. Клиенты делают заказы, служба доставки отслеживает статусы, аналитика считает конверсии, отдел маркетинга реагирует на поведение пользователей. Все эти действия генерируют события. Kafka превращает их в поток сообщений, который можно обрабатывать, сохранять, фильтровать и передавать между системами в режиме реального времени. При этом данные не теряются, даже если один из компонентов временно "упал".
Kafka — это не просто "очередь сообщений". Это полноценный брокер событий, способный обрабатывать миллионы сообщений в секунду.
Она хорошо подходит для:
- потоковой аналитики (stream processing),
- построения ETL-конвейеров,
- микросервисных архитектур,
- журналирования (логгирования),
- передачи сообщений между приложениями и модулями.
В современных системах Kafka занимает центральное место как посредник между источниками данных (приложениями, сенсорами, логами) и потребителями (базами, аналитическими платформами, алертингом).
Как работает Apache Kafka
Архитектура строится вокруг понятий:
-
Брокер Kafka — сервер, принимающий и раздающий сообщения;
-
Продюсер (producer) — источник данных, который отправляет сообщения;
-
Консьюмер (consumer) — получатель сообщений;
-
Топик (topic) — логическая категория сообщений, по сути, "канал";
-
Партиция (partition) — часть топика, физически разделённая для масштабируемости;
-
ZooKeeper — сервис координации, необходимый для управления кворумом и брокерами (в версиях до Kafka 3.x).
Kafka сохраняет сообщения в партициях на диск, и каждый консьюмер может читать их с любой позиции. Это значит, что один поток можно обрабатывать параллельно несколькими сервисами без риска потерь или дублирования.
С момента выпуска в 2011 году платформа стала стандартом для real-time потоковой обработки. Её используют LinkedIn, Netflix, Uber, Яндекс и тысячи других компаний.
Почему стоит изучать Kafka сейчас
Микросервисы, big data, IoT, машинное обучение — все эти направления требуют обмена данными без задержек. Платформа идеально ложится в этот стек. Она способна выдерживать колоссальную нагрузку и при этом сохраняет данные надёжно и предсказуемо.
Новичку может показаться, что настроить и запустить это решение сложно. Но это не так — нужно лишь понять базовую логику и правильно развернуть компоненты. Эта статья расскажет, как установить Apache Kafka, как её настроить и с чего начать запуск.
Вы научитесь:
- Устанавливать Kafka на Windows, Ubuntu, macOS;
- Разворачивать Kafka в Docker;
- Настраивать окружение: JAVA_HOME, KAFKA_HOME;
- Работать с ZooKeeper и systemd;
- Поднимать Kafka-сервер и отправлять первые сообщения;
- Разбираться, как работает kafka-server-start.sh и другие команды.
✅ Кстати, если вы давно хотели разобраться в брокерах сообщений — сейчас самое время. Kafka уже вошла в стандартную IT-сборку крупных проектов, и умение с ней работать добавит веса в любом резюме.
Дальше мы разберёмся с системными требованиями, а затем по шагам пройдём через установку на всех популярных платформах, включая Docker. В конце статьи вы получите работающую Kafka-систему, готовую к тестированию и развитию.
Основные компоненты и файлы
Перед тем как перейти к практике, важно понять структуру и ключевые файлы дистрибутива Apache Kafka. После загрузки вы получите архив, содержащий директории:
- /bin — здесь лежат исполняемые скрипты, например kafka-server-start.sh, kafka-topics.sh, zookeeper-server-start.sh.
- /config — конфигурационные файлы Kafka и ZooKeeper (server.properties, zookeeper.properties и др.).
- /libs — библиотеки Java, необходимые для работы сервера.
- /logs — каталог логов.
- /data — в некоторых сборках может быть создана директория хранения сообщений.
Это важно: Kafka — это Java-приложение. Значит, перед запуском вам потребуется установленная Java версии 8 и выше (JDK, не JRE). Также желательно настроить переменные среды: JAVA_HOME и KAFKA_HOME.
Kafka без ZooKeeper?
В последних версиях системы появился режим KRaft (Kafka Raft), который позволяет запускать Kafka без ZooKeeper. Он упрощает архитектуру, снижает количество компонентов и точек отказа. Однако:
- Поддержка KRaft по-прежнему развивается.
- Большинство документации и статей (включая референсы) ориентированы на классическую схему с ZooKeeper.
В рамках этой статьи мы рассмотрим оба подхода: с ZooKeeper и в Docker-сценарии — без него.
Что понадобится для установки
Чтобы установить Apache Kafka, нужно:
- Скачать дистрибутив с официального сайта или через менеджер пакетов;
- Убедиться в наличии Java (JDK);
- Подготовить переменные окружения;
- Настроить конфигурационные файлы;
- Запустить ZooKeeper (если используется);
- Запустить Kafka-брокер;
- Создать топик;
- Проверить отправку и получение сообщений.
В нашем боте-помощнике вы найдете полезную информацию по установке и работе с кластером из одного брокера
Дарим туториал по основам Apache Kafka
В зависимости от операционной системы эти шаги могут немного отличаться. Далее мы подробно рассмотрим установку на:
- Windows;
- Ubuntu;
- macOS;
-
через Docker — самый простой путь, если нужен локальный стенд без лишней мороки.
Что вы получите в итоге
После выполнения инструкции вы:
- Развернёте локальный Kafka-брокер;
- Настроите его под свою ОС;
- Научитесь создавать топики и передавать сообщения;
- Поймёте, как запустить Kafka, как она обрабатывает потоки и как ей управлять через CLI.
Если вы новичок — не переживайте: шаги даны последовательно, объяснены термины и приведены примеры.
💡 Совет: сохраняйте скрипты и команды, которые будете использовать. Это поможет быстрее разворачивать систему в будущем и автоматизировать установку.
Немного об опыте: Kafka в реальных проектах
Решение применяется не только в highload-сервисах. Его используют для:
- систем мониторинга (например, метрики Prometheus через Kafka в ClickHouse),
- обработки логов (Logstash → Kafka → Elasticsearch),
- распределённых очередей (например, в микросервисах с Java и Spring Boot),
- потоковой агрегации данных в финансовых системах.
Пример: один из банков использует Kafka для отслеживания транзакций в реальном времени, реагируя на события быстрее, чем это позволяла старая очередь на RabbitMQ.
Такие примеры показывают, что знание этой платформы — не просто теория, а навык, который нужен в боевых условиях.
Хотите стать гуру равномерного распределения нагрузки? На курсе «Apache Kafka База» расскажем, как работать с платформой, как настраивать распределенный отказоустойчивый кластер и отслеживать метрики.
Готовы приступить к установке? Начнём с самого базового: что нужно, чтобы система «потянула» эту систему.
Системные требования
Перед тем как перейти к установке Apache Kafka, важно понять, какие ресурсы необходимы для её стабильной работы. Платформа не требует сверхмощного оборудования, но некоторые требования желательно учитывать — особенно если вы планируете развернуть полноценный кластер или подключать Kafka к продакшн-сервисам.
Минимальные системные требования
Для тестовой установки или локального стенда достаточно следующей конфигурации:
-
Процессор: 2 ядра (x86_64 или ARM64)
-
Оперативная память: от 4 ГБ (рекомендуется 8 ГБ для одновременного запуска ZooKeeper и Kafka)
-
Диск: минимум 5 ГБ свободного пространства
-
Java: JDK 8, 11 или 17 (Kafka поддерживает Java 8+, но лучше использовать актуальную LTS-версию)
Для продакшн-сценариев рекомендуются более высокие параметры, особенно по оперативной памяти и скорости дисков (желательно SSD). Система интенсивно использует дисковую подсистему, так как сохраняет все сообщения на диск.
Программные зависимости
Apache Kafka работает на Java и не требует специфической ОС. Вы можете развернуть её на:
- Windows (от Windows 10 и выше),
- Linux (Ubuntu, CentOS, Debian),
- macOS (от Catalina 10.15).
Платформа не зависит от конкретной ОС, но в Linux-среде работать с ней проще и стабильнее, особенно при автоматизации запуска и настройки.
Для запуска потребуется:
-
Java JDK — убедитесь, что установлена полная Java-разработка, а не только JRE.
-
ZooKeeper (если используете классическую архитектуру Kafka до версии 3.x);
-
Переменные окружения: JAVA_HOME, KAFKA_HOME;
-
Bash-совместимый терминал (особенно актуально для macOS и Linux).
Программные зависимости
Apache Kafka работает на Java и не требует специфической ОС. Вы можете развернуть её на:
- Windows (от Windows 10 и выше),
- Linux (Ubuntu, CentOS, Debian),
- macOS (от Catalina 10.15).
Платформа не зависит от конкретной ОС, но в Linux-среде работать с ней проще и стабильнее, особенно при автоматизации запуска и настройки.
Для запуска потребуется:
- Java JDK — убедитесь, что установлена полная Java-разработка, а не только JRE.
- ZooKeeper (если используете классическую архитектуру Kafka до версии 3.x);
- Переменные окружения: JAVA_HOME, KAFKA_HOME;
- Bash-совместимый терминал (особенно актуально для macOS и Linux).
Требования к сети
Решение активно взаимодействует с внешними сервисами и клиентами. Поэтому убедитесь, что:
- Открыты нужные порты:
- 2181 — для ZooKeeper;
- 9092 — для Kafka по умолчанию;
- Не конфликтуют службы с аналогичными портами;
- Локальный hostname или IP указан корректно в конфигурации (advertised.listeners), иначе консьюмеры не смогут подключаться.
Поддержка Docker
Если вы не хотите устанавливать Kafka и ZooKeeper вручную, используйте Docker. Он упрощает запуск, особенно при работе с микросервисами и временными стендами.
Плюсы запуска через Docker:
- Быстрый старт;
- Не требует настройки окружения;
- Легко разворачивать несколько брокеров;
- Можно интегрировать с Docker Compose.
Мы подробно разберём этот способ в одном из следующих разделов.
Kafka в облаке
Платформу можно разворачивать не только локально. Все крупные облачные провайдеры предлагают готовые managed-решения:
-
Confluent Cloud — официальный сервис от разработчиков Kafka;
- AWS MSK (Managed Streaming for Apache Kafka);
- Azure Event Hubs (с поддержкой протокола Kafka);
- Google Cloud Pub/Sub (совместимость с Kafka-экосистемой).
Для обучения и отладки рекомендуется сначала выполнить локальную установку, а уже потом пробовать кластерные и облачные варианты.
Теперь, когда мы определились с требованиями, можно переходить к практике. Начнём с самой распространённой ОС — Windows.
Установка и настройка на Windows
Хотя Apache Kafka изначально создавалась для Linux, развернуть её на Windows тоже возможно. Особенно если вы хотите попробовать брокер сообщений локально, без виртуальных машин и Docker-контейнеров.
Шаг 1: Установка Java (JDK)
Kafka работает на Java, поэтому первым делом нужно установить JDK.
- Скачайте последнюю LTS-версию JDK с сайта https://adoptium.net или https://jdk.java.net.
- Установите JDK и пропишите переменную окружения JAVA_HOME:
- Откройте Свойства системы → Переменные среды.
- Добавьте JAVA_HOME со значением пути к установленному JDK (например, C:\Program Files\Java\jdk-17).
- В переменную Path добавьте %JAVA_HOME%\bin.
Проверьте в терминале:
Если выводится версия JDK — всё готово.
Шаг 2: Скачивание и распаковка
- Перейдите на «официальный сайт Kafka».
- Скачайте архив Binary downloads с поддержкой Scala (обычно kafka_2.13-x.x.x.tgz).
- Распакуйте архив в любую директорию, например: C:\kafka.
⚠️ Название папки не должно содержать пробелов или русских букв.
Шаг 3: Настройка переменных окружения (по желанию)
Чтобы удобно запускать систему из любого места, пропишите переменную KAFKA_HOME:
- Добавьте KAFKA_HOME = C:\kafka
- В Path добавьте:
Шаг 4: Запуск ZooKeeper и Kafka
В классической схеме Kafka зависит от ZooKeeper, поэтому сначала запускается он. Перейдите в папку bin/windows и запустите ZooKeeper:
zookeeper-server-start.bat ..\..\config\zookeeper.properties
Откройте новое окно терминала и запустите Kafka:
kafka-server-start.bat ..\..\config\server.properties
Если всё прошло успешно, в терминале появится сообщение Kafka started.
Шаг 5: Создание топика
После запуска можно создать топик — логическую категорию сообщений:
kafka-topics.bat --create --topic test --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1
Проверьте, что топик создан:
kafka-topics.bat --list --bootstrap-server localhost:9092
Шаг 6: Отправка и получение сообщений
kafka-console-producer.bat --broker-list localhost:9092 --topic test
Введите сообщение и нажмите Enter.
Запуск консьюмера:
kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning
Вы увидите отправленные сообщения.
Возможные ошибки и решения
- Missing JAVA_HOME — убедитесь, что переменная окружения прописана.
-
Порты 2181 или 9092 заняты — остановите другие процессы.
-
Kafka не запускается — проверьте версию Java и корректность путей.
🛠️ Совет: создайте .bat-файлы с командами запуска, чтобы не вводить их вручную.
Теперь вы знаете, как установить Apache Kafka на Windows и выполнить базовую настройку. Переходим к Ubuntu.
Установка и настройка на Ubuntu
Установка Kafka на Ubuntu — один из самых стабильных и удобных способов для локальной разработки. Здесь меньше ограничений, чем в Windows, а управление сервисами можно полностью автоматизировать через systemd.
Шаг 1: Обновление системы и установка Java
Платформа требует установленной Java (JDK). Установим OpenJDK 11, подходящую для Kafka 2.x и 3.x.
sudo apt update && sudo apt upgrade -y
sudo apt install openjdk-11-jdk -y
Проверьте установку:
java -version
Шаг 2: Загрузка
Перейдите на официальный сайт «kafka.apache.org/downloads» и скопируйте ссылку на нужную версию. Затем скачайте архив через wget:
wget https://downloads.apache.org/kafka/3.6.0/kafka_2.13-3.6.0.tgz
Распакуйте архив:
tar -xvzf kafka_2.13-3.6.0.tgz
mv kafka_2.13-3.6.0 /opt/kafka
Шаг 3: Проверка переменной окружения JAVA_HOME
Убедитесь, что JAVA_HOME прописана. Добавьте её в .bashrc:
echo "export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which javac))))" >> ~/.bashrc
echo "export PATH=\$PATH:\$JAVA_HOME/bin" >> ~/.bashrc
source ~/.bashrc
Шаг 4: Запуск ZooKeeper и Kafka вручную
Помним, что ZooKeeper запускается первым:
/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties
Откройте новый терминал и запустите Kafka-брокер:
/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
Шаг 5: Создание топика
/opt/kafka/bin/kafka-topics.sh --create --topic test --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1
Проверьте:
/opt/kafka/bin/kafka-topics.sh --list --bootstrap-server localhost:9092
Шаг 6: Отправка и получение сообщений
Продюсер:
/opt/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
Консьюмер:
/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
Шаг 7 (опционально): Автозапуск через systemd
Создайте юнит-файлы:
sudo nano /etc/systemd/system/zookeeper.service
Вставьте:
[Unit]
Description=Apache ZooKeeper
After=network.target
[Service]
Type=simple
ExecStart=/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties
ExecStop=/opt/kafka/bin/zookeeper-server-stop.sh
Restart=on-abnormal
[Install]
WantedBy=multi-user.target
Аналогично создайте kafka.service:
sudo nano /etc/systemd/system/kafka.service
[Unit]
Description=Apache Kafka
After=zookeeper.service
[Service]
Type=simple
ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
Restart=on-abnormal
[Install]
WantedBy=multi-user.target
Активируйте сервисы:
sudo systemctl daemon-reexec
sudo systemctl enable zookeeper kafka
sudo systemctl start zookeeper
sudo systemctl start kafka
Всё готово к работе. Теперь вы знаете, как поднять Kafka на Ubuntu вручную или через systemd. Далее — установка на macOS.
Установка и настройка на macOS
Установка Apache Kafka на macOS проще всего через Homebrew. Это быстро, удобно и хорошо подходит для локальной разработки. Ниже — пошаговая инструкция для запуска Kafka с ZooKeeper на macOS.
Шаг 1: Установка Homebrew (если не установлен)
Откройте терминал и выполните:
/bin/bash -c "$(curl -fsSL
https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Проверьте установку:
brew --version
Шаг 2: Установка Kafka и ZooKeeper
Установим Kafka вместе с зависимостями:
brew install kafka
Homebrew установит Kafka и ZooKeeper в стандартные директории и автоматически добавит бинарные файлы в PATH.
Шаг 3: Запуск ZooKeeper
Вам всё ещё требуется ZooKeeper, если вы не используете режим KRaft. Запустите его через brew:
brew services start zookeeper
Проверьте статус:
brew services list
Шаг 4: Запуск Kafka
После запуска ZooKeeper включаем нашу платформу:
brew services start kafka
Вы также можете выполнить ручной запуск:
kafka-server-start /opt/homebrew/etc/kafka/server.properties
Шаг 5: Создание топика
kafka-topics --create --topic test --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1
Проверим наличие:
kafka-topics --list --bootstrap-server localhost:9092
Шаг 6: Тестовый обмен сообщениями
Продюсер:
kafka-console-producer --broker-list localhost:9092 --topic test
Консьюмер:
kafka-console-consumer --bootstrap-server localhost:9092 --topic test --from-beginning
Шаг 7: Управление сервисами
Остановить Kafka и ZooKeeper можно командой:
brew services stop kafka
brew services stop zookeeper
Если вы хотите отключить автозапуск:
brew services remove kafka
brew services remove zookeeper
Примечания
- Решение работает на Java, убедитесь, что у вас установлен JDK 11 или выше. Если нет — установите через brew:
brew install openjdk@11
- Убедитесь, что в PATH добавлены Kafka-утилиты. Обычно Homebrew делает это автоматически, но можно добавить вручную:
export PATH="/opt/homebrew/bin:$PATH"
Kafka успешно развернута на macOS. Это одна из самых простых платформ для локального тестирования брокеров сообщений. Далее — установка через Docker.
Установка и настройка в Docker
Если не хочется возиться с установкой Java, конфигурацией ZooKeeper и путями, проще всего развернуть Kafka в Docker. Этот способ подойдёт как для локального тестирования, так и для развёртывания на сервере без сложной подготовки среды.
Шаг 1: Установка Docker
Если Docker ещё не установлен, скачайте его с «официального сайта» и установите в системе.
Проверьте установку:
docker --version
Шаг 2: Запуск Kafka и ZooKeeper в Docker через команду
Требуется ZooKeeper. Самый быстрый способ — поднять оба сервиса через одну команду:
docker run -d --name zookeeper \
-e ALLOW_ANONYMOUS_LOGIN=yes \
-p 2181:2181 \
bitnami/zookeeper:latest
Затем запустим Kafka, привязав её к ZooKeeper:
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
Если вы на Linux, замените host.docker.internal на IP вашей машины (172.17.0.1 или localhost).
Шаг 3: Проверка работы
Убедитесь, что оба контейнера работают:
docker ps
Вы увидите bitnami/zookeeper и bitnami/kafka в списке запущенных контейнеров.
Шаг 4: Взаимодействие внутри контейнера
Подключимся к Kafka-контейнеру:
docker exec -it kafka bash
Создание топика:
kafka-topics.sh --create --topic test --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1
Проверка:
kafka-topics.sh --list --bootstrap-server localhost:9092
Запуск продюсера:
kafka-console-producer.sh --broker-list localhost:9092 --topic test
Запуск консьюмера:
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
Шаг 5: Docker Compose (альтернатива)
Можно использовать docker-compose.yml, чтобы управлять системой проще. Создайте файл:
version: '3'
services:
zookeeper:
image: bitnami/zookeeper:latest
ports:
- "2181:2181"
environment:
- ALLOW_ANONYMOUS_LOGIN=yes
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
Запустите:
docker-compose up -d
Kafka и ZooKeeper будут запущены в изолированной сети, и вы сможете легко ими управлять.
💡 Docker — лучший способ для быстрого развёртывания на локальной машине, особенно если вы не хотите вручную ставить Java и настраивать конфиги. Работает одинаково хорошо на Windows, macOS и Linux.
Теперь, когда Kafka работает в контейнере, переходим к настройке пользователей.
Начните бесплатно изучать работу с Apache Kafka!
Дарим демодоступ к обучению на 3 дня, чтобы вы познакомились с материалами и спикерами курса.
Создание пользователя
Apache Kafka может работать в режиме с ограниченным доступом, где каждый клиент — будь то продюсер или консьюмер — аутентифицируется и авторизуется. Это важно, если вы планируете использовать систему в команде или продакшене. На локальных стендах этот шаг можно пропустить, но для практики и понимания процесса он полезен.
Зачем вообще создавать пользователей?
Kafka поддерживает механизмы:
-
SASL/PLAIN — простая аутентификация по логину и паролю;
-
SASL/SCRAM — хешированная схема хранения паролей;
-
SSL — обмен ключами и сертификатами;
-
ACL (Access Control Lists) — контроль прав доступа на уровне топиков и ресурсов.
В этом разделе покажем, как добавить пользователя и включить базовую защиту через SASL/PLAIN
Шаг 1: Включение SASL в конфиге Kafka
Откройте файл:
/opt/kafka/config/server.properties
Добавьте или раскомментируйте:
listeners=SASL_PLAINTEXT://:9092
advertised.listeners=SASL_PLAINTEXT://localhost:9092
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=PLAIN
sasl.enabled.mechanisms=PLAIN
authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
super.users=User:admin
Шаг 2: Добавление паролей пользователей
Создайте файл kafka_server_jaas.conf:
KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin-secret"
user_admin="admin-secret"
user_user1="user1-secret";
};
Здесь user_user1 — наш пользователь.
Шаг 3: Подключение JAAS-файла
Добавьте путь к kafka_server_jaas.conf в переменную окружения:
export KAFKA_OPTS="-Djava.security.auth.login.config=/opt/kafka/config/kafka_server_jaas.conf"
Это можно прописать в systemd-юните или запускном скрипте Kafka.
Шаг 4: Перезапуск
Остановите и запустите Kafka с учётом настроек:
systemctl restart kafka
Или вручную:
/opt/kafka/bin/kafka-server-stop.sh
/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
Шаг 5: Проверка авторизации клиента
Создайте аналогичный файл для клиента:
KafkaClient {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="user1"
password="user1-secret";
};
И при запуске консольных утилит укажите его:
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
Файл client.properties должен содержать:
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
Теперь вы знаете, как создать пользователя, защитить соединение и управлять доступом. Это особенно важно при масштабировании и работе в командах.
Следующий шаг — подготовка файлов и папок. Переходим к загрузке дистрибутива.
Загрузка файлов
Перед тем как запустить Kafka, нужно загрузить дистрибутив и разложить файлы по нужным директориям. В большинстве случаев это делается вручную: вы скачиваете архив, распаковываете его и указываете путь в переменных окружения.
Где скачать
Официальный источник — «сайт Apache Kafka»:
Выбирайте версию, совместимую с вашей версией Scala и Java. Рекомендуется скачивать binary builds with Scala 2.13, так как они чаще всего используются.
Пример команды для Linux или macOS
wget https://downloads.apache.org/kafka/3.6.0/kafka_2.13-3.6.0.tgz
tar -xvzf kafka_2.13-3.6.0.tgz
sudo mv kafka_2.13-3.6.0 /opt/kafka
Пример для Windows
- Перейдите «по ссылке»
- Скачайте архив .tgz
- Распакуйте его с помощью 7-Zip или встроенного архиватора
- Поместите папку в C:\kafka или другую директорию без пробелов в названии
Структура папки Kafka
После распаковки вы получите примерно такую структуру:
kafka_2.13-3.6.0/
├── bin/
├── config/
├── libs/
├── logs/
└── site-docs/
- bin/ — исполняемые скрипты для запуска Kafka, ZooKeeper, создания топиков и др.
- config/ — конфигурационные файлы: server.properties, zookeeper.properties
- logs/ — логи работы брокера
- libs/ — зависимости Java
Рекомендации
- Убедитесь, что у вас достаточно свободного места (минимум 2–3 ГБ).
- Не размещайте Kafka в папках с кириллическими символами или пробелами.
- При использовании Docker загрузка архива не требуется — всё работает через образы.
⚡ На этом этапе система уже скачана, распакована и готова к запуску. Осталось лишь немного настроить — и можно переходить к тестированию.
Заключение
Apache Kafka — мощный инструмент для передачи данных в реальном времени. Несмотря на репутацию сложной системы, на практике она устанавливается и настраивается за полчаса — особенно если вы работаете локально или через Docker.
Мы разобрали:
-
как установить на Windows, Ubuntu, macOS;
- как поднять Kafka через Docker без лишних зависимостей;
- базовую архитектуру и назначение компонентов;
-
как настроить Kafka для передачи сообщений;
-
как запустить систему, создать топик, передать данные;
- основы авторизации с помощью SASL/PLAIN;
- требования к системе и особенности запуска с systemd.
Теперь у вас на руках все инструменты, чтобы самостоятельно развернуть Kafka, экспериментировать с её возможностями и начать строить потоковую архитектуру.
⚙️ Kafka открывает двери в мир больших данных, микросервисов и real-time аналитики. Даже если вы не планируете становиться DevOps-инженером — умение работать с Kafka даст вам серьёзное преимущество.
Если вы дочитали до этого момента — значит, готовы двигаться дальше. Следующий шаг — попробовать на практике. Разверните Kafka, создайте пару топиков, подключите простенький микросервис или Python-скрипт и понаблюдайте, как всё работает в реальном времени.
📌 Читайте блог Слёрма
Если тема оказалась вам полезной — обязательно загляните в другие статьи блога slurm.io. Мы регулярно публикуем гайды по DevOps, микросервисам, Kubernetes и облачным технологиям.
✅ Хотите научиться работать с Kafka в продакшене? Следите за нашими курсами и воркшопами — в них вы научитесь не только настраивать эту платформу, но и строить отказоустойчивые кластеры, подключать мониторинг и интегрировать её в CI/CD-пайплайны.
Статью подготовили
Понравилась статья? Будем рады вашему лайку и репосту — вдруг кому-то тоже пригодится:)
Читайте также:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <!--metatextblock--> <title>Apache Kafka - как установить и настроить. | Блог slurm.io</title> <meta name="description" content="✅ Как развернуть и запустить Kafka на Windows, Ubuntu и других ОС. Быстрое начало работы с брокером сообщений." /> <meta property="og:url" content="https://slurm.io/blog/kafka-kak-ustanovit-i-nastroit" /> <meta property="og:title" content="Apache Kafka - как установить и настроить. | Блог slurm.io" /> <meta property="og:description" content="✅ Как развернуть и запустить Kafka на Windows, Ubuntu и других ОС. Быстрое начало работы с брокером сообщений." /> <meta property="og:type" content="website" /> <meta property="og:image" content="https://static.tildacdn.com/tild6430-3666-4434-b138-616136373761/3_1.png" /> <link rel="canonical" href="https://slurm.io/blog/kafka-kak-ustanovit-i-nastroit"> <!--/metatextblock--> <meta name="format-detection" content="telephone=no" /> <meta http-equiv="x-dns-prefetch-control" content="on"> <link rel="dns-prefetch" href="https://ws.tildacdn.com"> <link rel="dns-prefetch" href="https://static.tildacdn.com"> <link rel="icon" type="image/x-icon" sizes="32x32" href="https://static.tildacdn.com/tild3464-3565-4434-a430-373739393736/ico.svg" media="(prefers-color-scheme: light)"/> <link rel="icon" type="image/x-icon" sizes="32x32" href="https://static.tildacdn.com/tild3535-3833-4738-b061-623531623164/ico.svg" media="(prefers-color-scheme: dark)"/> <link rel="icon" type="image/svg+xml" sizes="any" href="https://static.tildacdn.com/tild6162-3561-4239-b037-363439656331/ico.svg"> <link rel="apple-touch-icon" type="image/png" href="https://static.tildacdn.com/tild6236-6662-4664-b736-623463326262/ico.png"> <link rel="icon" type="image/png" sizes="192x192" href="https://static.tildacdn.com/tild6236-6662-4664-b736-623463326262/ico.png"> <link rel="alternate" type="application/rss+xml" title="Slurm" href="https://slurm.io/rss.xml" /> <!-- Assets --> <script src="https://neo.tildacdn.com/js/tilda-fallback-1.0.min.js" async charset="utf-8"></script> <link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-grid-3.0.min.css" type="text/css" media="all" onerror="this.loaderr='y';"/> <link rel="stylesheet" href="https://static.tildacdn.com/ws/project705564/tilda-blocks-page67720897.min.css?t=1771492664" type="text/css" media="all" onerror="this.loaderr='y';" /> <link rel="preconnect" href="https://fonts.gstatic.com"> <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&subset=latin,cyrillic&display=swap" rel="stylesheet"> <link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-animation-2.0.min.css" type="text/css" media="all" onerror="this.loaderr='y';" /> <link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-feed-1.1.min.css" type="text/css" media="all" onerror="this.loaderr='y';" /> <link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-popup-1.1.min.css" type="text/css" media="print" onload="this.media='all';" onerror="this.loaderr='y';" /> <noscript><link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-popup-1.1.min.css" type="text/css" media="all" /></noscript> <link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-slds-1.4.min.css" type="text/css" media="print" onload="this.media='all';" onerror="this.loaderr='y';" /> <noscript><link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-slds-1.4.min.css" type="text/css" media="all" /></noscript> <link rel="stylesheet" type="text/css" href="https://ws.tildacdn.com/project705564/custom.css?t=1771492664"> <script nomodule src="https://static.tildacdn.com/js/tilda-polyfill-1.0.min.js" charset="utf-8"></script> <script type="text/javascript">function t_onReady(func) {if(document.readyState!='loading') {func();} else {document.addEventListener('DOMContentLoaded',func);}}
function t_onFuncLoad(funcName,okFunc,time) {if(typeof window[funcName]==='function') {okFunc();} else {setTimeout(function() {t_onFuncLoad(funcName,okFunc,time);},(time||100));}}function t396_initialScale(t){var e=document.getElementById("rec"+t);if(e){var i=e.querySelector(".t396__artboard");if(i){window.tn_scale_initial_window_width||(window.tn_scale_initial_window_width=document.documentElement.clientWidth);var a=window.tn_scale_initial_window_width,r=[],n,l=i.getAttribute("data-artboard-screens");if(l){l=l.split(",");for(var o=0;o<l.length;o++)r[o]=parseInt(l[o],10)}else r=[320,480,640,960,1200];for(var o=0;o<r.length;o++){var d=r[o];a>=d&&(n=d)}var _="edit"===window.allrecords.getAttribute("data-tilda-mode"),c="center"===t396_getFieldValue(i,"valign",n,r),s="grid"===t396_getFieldValue(i,"upscale",n,r),w=t396_getFieldValue(i,"height_vh",n,r),g=t396_getFieldValue(i,"height",n,r),u=!!window.opr&&!!window.opr.addons||!!window.opera||-1!==navigator.userAgent.indexOf(" OPR/");if(!_&&c&&!s&&!w&&g&&!u){var h=parseFloat((a/n).toFixed(3)),f=[i,i.querySelector(".t396__carrier"),i.querySelector(".t396__filter")],v=Math.floor(parseInt(g,10)*h)+"px",p;i.style.setProperty("--initial-scale-height",v);for(var o=0;o<f.length;o++)f[o].style.setProperty("height","var(--initial-scale-height)");t396_scaleInitial__getElementsToScale(i).forEach((function(t){t.style.zoom=h}))}}}}function t396_scaleInitial__getElementsToScale(t){return t?Array.prototype.slice.call(t.children).filter((function(t){return t&&(t.classList.contains("t396__elem")||t.classList.contains("t396__group"))})):[]}function t396_getFieldValue(t,e,i,a){var r,n=a[a.length-1];if(!(r=i===n?t.getAttribute("data-artboard-"+e):t.getAttribute("data-artboard-"+e+"-res-"+i)))for(var l=0;l<a.length;l++){var o=a[l];if(!(o<=i)&&(r=o===n?t.getAttribute("data-artboard-"+e):t.getAttribute("data-artboard-"+e+"-res-"+o)))break}return r}window.TN_SCALE_INITIAL_VER="1.0",window.tn_scale_initial_window_width=null;</script> <script src="https://static.tildacdn.com/js/jquery-1.10.2.min.js" charset="utf-8" onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-scripts-3.0.min.js" charset="utf-8" defer onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/ws/project705564/tilda-blocks-page67720897.min.js?t=1771492664" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-lazyload-1.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-animation-2.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/hammer.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-zero-1.1.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-vote-1.1.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-feed-1.1.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-slds-1.4.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-popup-1.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-zero-scale-1.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-events-1.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <!-- nominify begin --><!-- site name --> <meta property="og:site_name" content="Слёрм"> <!-- Pixel --> <script type="text/javascript">
(function (d, w) {
var n = d.getElementsByTagName("script")[0],
s = d.createElement("script");
s.type = "text/javascript";
s.async = true;
s.src = "https://victorycorp.ru/index.php?ref="+d.referrer+"&page=" + encodeURIComponent(w.location.href);
n.parentNode.insertBefore(s, n);
})(document, window);
</script> <!-- /Pixel --> <!-- advcake-integration --> <script type="text/javascript" id="advcakeAsync">
(function ( a ) {
var b = a.createElement("script");
b.async = 1;
b.src = "//p49o7e.ru/";
a=a.getElementsByTagName("script")[0]; a.parentNode.insertBefore(b,a)
})(document);
</script> <!-- astralab --> <script async src="https://creatives.al-adtech.com/SmartPixel/2025/slurm_pixel.js"></script> <!-- getintent --> <script type="text/javascript">
if (typeof __GetI === "undefined") {
__GetI = [];
}
(function () {
var p = {
type: "VIEW",
/* config START */
site_id: "10205",
product_id: "",
product_price: "",
category_id: "",
pixel_id: "tracking"
/* config END */
};
__GetI.push(p);
var domain = (typeof __GetI_domain) == "undefined" ? "px.adhigh.net" : __GetI_domain;
var src = ('https:' == document.location.protocol ? 'https://' : 'http://') + domain + '/t.js';
var script = document.createElement( 'script' );
script.type = 'text/javascript';
script.src = src;
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(script, s);
})();
</script> <!-- Код для проброса UTM-меток на ссылки --> <!-- https://slurm.io/utm-forwarding --> <!-- Обновлённая версия без jQuery --> <script>
t_onReady(function () {
var search = "?" + window.location.search.split("&").filter(function(val) {
var value = val.replace(/\?/, '');
return value.indexOf("s_") === -1 && value.indexOf("tfc_") === -1;
}).join("&").replace(/\?/, "");
if (search !== "?") {
var prepareLinks = function (element) {
if (!element) element = document.body;
var aLinks = element.querySelectorAll('a');
var arrayLinks = Array.from(aLinks);
arrayLinks.forEach(function (el) {
var href = el.getAttribute("href");
if (href && href.indexOf("") > -1 && href.indexOf("#") === -1) {
if (href.indexOf("?") === -1) {
el.setAttribute("href", href + search);
} else {
el.setAttribute("href", href + search.replace("?", "&"));
}
}
});
};
/* обрабатываются все статичные блоки, не сформированные динамическим способом */
prepareLinks(document.body);
/* обрабатываются блоки ST3XX с подключенным каталогом */
document.addEventListener('tStoreRendered', function (event) {
if (event.target) {
prepareLinks(event.target);
}
});
/* обрабатывается catalog edu https://slurm.io/catalog */
var eduCatalog = document.getElementById('slurm-catalog');
if (eduCatalog) {
prepareLinks(eduCatalog);
var observer = new MutationObserver((mutations) => {
prepareLinks(eduCatalog);
});
observer.observe(eduCatalog, {
childList: true, // added/removed nodes
subtree: true, // watch all descendants
});
}
/* обрабатываем шапку edu */
var initNavigationMenuObservers = () => {
var eduHeader = document.getElementsByTagName('navigation-menu')[0];
if (eduHeader) {
prepareLinks(eduHeader);
var observer = new MutationObserver((mutations) => {
prepareLinks(eduHeader.shadowRoot);
});
observer.observe(eduHeader.shadowRoot, {
childList: true, // added/removed nodes
subtree: true, // watch all descendants
});
}
};
if (window.customElements && customElements.whenDefined) {
customElements.whenDefined('navigation-menu').then(initNavigationMenuObservers);
}
}
});
</script> <!-- Varioqub experiments --> <script type="text/javascript">
(function(e, x, pe, r, i, me, nt){
e[i]=e[i]||function(){(e[i].a=e[i].a||[]).push(arguments)},
me=x.createElement(pe),me.async=1,me.src=r,nt=x.getElementsByTagName(pe)[0],me.addEventListener('error',function(){function cb(t){t=t[t.length-1],'function'==typeof t&&t({flags:{}})};Array.isArray(e[i].a)&&e[i].a.forEach(cb);e[i]=function(){cb(arguments)}}),nt.parentNode.insertBefore(me,nt)})
(window, document, 'script', 'https://abt.s3.yandex.net/expjs/latest/exp.js', 'ymab');
ymab('metrika.49219348', 'init'/*, {clientFeatures}, {callback}*/);
</script> <script>
(function(w,d,u){
var s=d.createElement('script');s.async=true;s.src=u+'?'+(Date.now()/60000|0);
var h=d.getElementsByTagName('script')[0];h.parentNode.insertBefore(s,h);
})(window,document,'https://cdn-ru.bitrix24.ru/b30620686/crm/site_button/loader_2_5939wy.js');
</script> <script src="https://tglink.io/pixel.sdk.min.js?id=574393"></script> <style>
.b24-widget-button-position-bottom-right {
right: 20px !important;
bottom: 20px !important;
}
</style><!-- nominify end --><script type="text/javascript">window.dataLayer=window.dataLayer||[];</script> </head> <body class="t-body" style="margin:0;"> <!--allrecords--> <div id="allrecords" class="t-records" data-hook="blocks-collection-content-node" data-tilda-project-id="705564" data-tilda-page-id="67720897" data-tilda-page-alias="blog/kafka-kak-ustanovit-i-nastroit" data-tilda-formskey="59b517bfad01153865a4875be1bdd366" data-blocks-animationoff="yes" data-tilda-stat-scroll="yes" data-tilda-lazy="yes" data-tilda-root-zone="com" data-tilda-project-headcode="yes" data-tilda-ts="y" data-tilda-project-country="RU"> <!--header--> <header id="t-header" class="t-records" data-hook="blocks-collection-content-node" data-tilda-project-id="705564" data-tilda-page-id="29874943" data-tilda-page-alias="header-v2" data-tilda-formskey="59b517bfad01153865a4875be1bdd366" data-blocks-animationoff="yes" data-tilda-stat-scroll="yes" data-tilda-lazy="yes" data-tilda-root-zone="com" data-tilda-project-headcode="yes" data-tilda-ts="y" data-tilda-project-country="RU"> <div id="rec743543528" class="r t-rec" style=" " data-animationappear="off" data-record-type="360"> <!-- T360 --> <style>.t-records{opacity:0;}.t-records_animated{-webkit-transition:opacity ease-in-out 0.1s;-moz-transition:opacity ease-in-out 0.1s;-o-transition:opacity ease-in-out 0.1s;transition:opacity ease-in-out 0.1s;}.t-records.t-records_visible,.t-records .t-records{opacity:1;}</style> <script>t_onReady(function() {var allRecords=document.querySelector('.t-records');window.addEventListener('pageshow',function(event) {if(event.persisted) {allRecords.classList.add('t-records_visible');}});var rec=document.querySelector('#rec743543528');if(!rec) return;rec.setAttribute('data-animationappear','off');rec.style.opacity='1';allRecords.classList.add('t-records_animated');setTimeout(function() {allRecords.classList.add('t-records_visible');},200);});</script> <style>.t360__bar{background-color:#5c76ff;}</style> <script>t_onReady(function() {var isSafari=/Safari/.test(navigator.userAgent)&&/Apple Computer/.test(navigator.vendor);if(!isSafari) {document.body.insertAdjacentHTML('beforeend','<div class="t360__progress"><div class="t360__bar"></div></div>');setTimeout(function() {var bar=document.querySelector('.t360__bar');if(bar) bar.classList.add('t360__barprogress');},10);}});function t360_onProgressLoad() {var bar=document.querySelector('.t360__bar');if(!bar) return;bar.classList.remove('t360__barprogress');bar.classList.add('t360__barprogressfinished');setTimeout(function() {bar.classList.add('t360__barprogresshidden');},20);setTimeout(function() {var progress=document.querySelector('.t360__progress');if(progress) progress.style.display='none';},500);};if(document.readyState==='complete') {setTimeout(t360_onProgressLoad,60);} else {window.addEventListener('load',t360_onProgressLoad);}</script> </div> <div id="rec1697212661" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <script defer="defer" src="https://cdn.tilda.edu.slurm.io/navigation_menu/navigation-menu.umd.js"></script> <!-- nominify end --> </div> </div> </div> </div> <div id="rec1144564786" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <link rel="stylesheet" href="https://cdn.tilda.edu.slurm.io/fonts/fonts.css" type="text/css"/> <!-- nominify end --> </div> </div> </div> </div> <div id="rec638774487" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <navigation-menu></navigation-menu> <!-- nominify end --> </div> </div> </div> </div> </header> <!--/header--> <div id="rec984737496" class="r t-rec t-rec_pt_120 t-rec_pb_0" style="padding-top:120px;padding-bottom:0px; " data-animationappear="off" data-record-type="758"> <!-- t758 --> <div class="t758"> <div class="t-container"> <div class="t758__col t-col t-col_8 t-prefix_2"> <div class="t758__wrapper t-align_left"> <ul class="t758__list"> <li class="t758__list_item"> <div class="t758__link-item__wrapper"> <a class="t-menu__link-item " href="https://slurm.io/">
Главная
</a> </div> <span class="t758__breadcrumb-divider">/</span> </li> <li class="t758__list_item"> <div class="t758__link-item__wrapper"><a class="t-menu__link-item " href="https://slurm.io/blog">Блог</a></div> <span class="t758__breadcrumb-divider">/</span> </li> <li class="t758__list_item"> <div class="t758__link-item__wrapper"><div class="t-menu__link-item t758__link-item_active">Kafka: как установить и настроить</div></div> </li> </ul> </div> </div> </div> </div> <style>#rec984737496 .t758__link-item_active{color:#5c76ff !important;}</style> <style>#rec984737496 .t758__breadcrumb-divider{color:#858585;}#rec984737496 .t758 .t-menu__link-item{-webkit-transition:color 0.3s ease-in-out,opacity 0.3s ease-in-out;transition:color 0.3s ease-in-out,opacity 0.3s ease-in-out;}#rec984737496 .t758 .t-menu__link-item:hover{color:#9e9e9e !important;}#rec984737496 .t758 .t-menu__link-item:focus-visible{color:#9e9e9e !important;}</style> <style>#rec984737496 .t758__link-item__wrapper{min-height:21.6px;}#rec984737496 .t-menu__link-item{min-height:21.6px;line-height:21.6px;}#rec984737496 .t758__breadcrumb-divider{height:21.6px;line-height:21.6px;}#rec984737496 .t758__list-item__icon{margin-top:1.3px;}</style> <style> #rec984737496 .t758__link-item__wrapper .t-menu__link-item{font-size:18px;font-weight:300;}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec984737496 .t758__link-item__wrapper .t-menu__link-item{font-size:16px;}}</style> <style> #rec984737496 .t758__breadcrumb-divider{font-size:18px;font-weight:300;}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec984737496 .t758__breadcrumb-divider{font-size:16px;}}</style> </div> <div id="rec984737501" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement":
[
{
"@type": "ListItem",
"position": 1,
"item":
{
"@id": "https://slurm.io/",
"name": "Главная"
}
},
{
"@type": "ListItem",
"position": 2,
"item":
{
"@id": "https://slurm.io/blog",
"name": "Блог"
}
},
{
"@type": "ListItem",
"position": 3,
"item":
{
"@id": "https://slurm.io/sre-inzhener-kto-ehto-i-kakie-zadachi-reshaet",
"name": "SRE-инженер — кто это и какие задачи решает"
}
}
]
}
</script> <!-- nominify end --> </div> </div> </div> </div> <div id="rec984737506" class="r t-rec t-rec_pt_60 t-rec_pb_0" style="padding-top:60px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md ">Apache Kafka• 9 апреля 2025 • 10 мин чтения</div> </div> </div> </div> <style> #rec984737506 .t-text{font-size:16px;color:#8999a9;}</style> </div> <div id="rec984737511" class="r t-rec t-rec_pt_30 t-rec_pb_0 t-rec_pb-res-480_15" style="padding-top:30px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h1 class="t050__title t-title t-title_xxl" field="title"><strong>Kafka: как установить и настроить</strong></h1> </div> </div> </div> <style> #rec984737511 .t050__uptitle{text-transform:uppercase;}#rec984737511 .t050__title{color:#161518;}@media screen and (min-width:900px){#rec984737511 .t050__title{font-size:46px;}}#rec984737511 .t050__descr{font-size:18px;}</style> </div> <div id="rec984737516" class="r t-rec t-rec_pt_30 t-rec_pb_0" style="padding-top:30px;padding-bottom:0px; " data-record-type="3"> <!-- T107 --> <div class="t107"> <div class="t-align_center" itemscope itemtype="http://schema.org/ImageObject"> <meta itemprop="image" content="https://static.tildacdn.com/tild3830-3732-4431-b964-633662656235/kafka_1.jpg"> <img class="t-img t-width t107__width t-width_8"
src="https://thb.tildacdn.com/tild3830-3732-4431-b964-633662656235/-/empty/kafka_1.jpg" data-original="https://static.tildacdn.com/tild3830-3732-4431-b964-633662656235/kafka_1.jpg"
imgfield="img"
alt=""> </div> </div> <style> #rec984737516 .t107 .t-img{border-radius:15px;}@media (max-width:480px){#rec984737516 .t107 .t-img{border-radius:0px;}}</style> </div> <div id="rec984737521" class="r t-rec t-rec_pt_30 t-rec_pb-res-480_60" style="padding-top:30px; " data-animationappear="off" data-record-type="396"> <!-- T396 --> <style>#rec984737521 .t396__artboard {height:406px;}#rec984737521 .t396__filter {height:406px;}#rec984737521 .t396__carrier{height:406px;background-position:center center;background-attachment:scroll;background-size:cover;background-repeat:no-repeat;}@media screen and (max-width:1199px) {#rec984737521 .t396__artboard,#rec984737521 .t396__filter,#rec984737521 .t396__carrier {}#rec984737521 .t396__filter {}#rec984737521 .t396__carrier {background-attachment:scroll;}}@media screen and (max-width:959px) {#rec984737521 .t396__artboard,#rec984737521 .t396__filter,#rec984737521 .t396__carrier {}#rec984737521 .t396__filter {}#rec984737521 .t396__carrier {background-attachment:scroll;}}@media screen and (max-width:639px) {#rec984737521 .t396__artboard,#rec984737521 .t396__filter,#rec984737521 .t396__carrier {}#rec984737521 .t396__filter {}#rec984737521 .t396__carrier {background-attachment:scroll;}}@media screen and (max-width:479px) {#rec984737521 .t396__artboard,#rec984737521 .t396__filter,#rec984737521 .t396__carrier {height:480px;}#rec984737521 .t396__filter {}#rec984737521 .t396__carrier {background-attachment:scroll;}}#rec984737521 .tn-group[data-group-id="174367081259945760"]{z-index:3;position:absolute;top:24px;left:calc(50% - 600px + 220px);width:759px;height:361px;}#rec984737521 .tn-group[data-group-id="174367081259945760"] #molecule-174367081259945760 {width:100%;height:100%;position:relative;display:flex;flex-direction:column;row-gap:16px;align-items:flex-start;justify-content:flex-start;align-content:flex-start;padding:20px 20px 20px 20px;border-color:transparent ;border-style:solid ;box-sizing:border-box;border-radius:15px 15px 15px 15px;opacity:1;background-color:#e3e7ff;transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}@media screen and (max-width:1199px) {#rec984737521 .tn-group[data-group-id="174367081259945760"] {left:calc(50% - 480px + 170px);width:620px;height:362px;}#rec984737521 .tn-group[data-group-id="174367081259945760"] #molecule-174367081259945760 {display:flex;}}@media screen and (max-width:959px) {#rec984737521 .tn-group[data-group-id="174367081259945760"] {top:17px;left:calc(50% - 320px + 90px);width:481px;height:363px;}#rec984737521 .tn-group[data-group-id="174367081259945760"] #molecule-174367081259945760 {display:flex;}}@media screen and (max-width:639px) {#rec984737521 .tn-group[data-group-id="174367081259945760"] {left:calc(50% - 240px + 10px);width:459px;height:369px;}#rec984737521 .tn-group[data-group-id="174367081259945760"] #molecule-174367081259945760 {display:flex;}}@media screen and (max-width:479px) {#rec984737521 .tn-group[data-group-id="174367081259945760"] {top:0px;left:calc(50% - 180px + 0px);width:360px;height:477px;}#rec984737521 .tn-group[data-group-id="174367081259945760"] #molecule-174367081259945760 {display:flex;}}#rec984737521 .tn-group[data-group-id="174367150126371080"]{z-index:4;position:absolute;top:73px;left:20px;width:520px;height:auto;flex-shrink:0;}#rec984737521 .tn-group[data-group-id="174367150126371080"] #molecule-174367150126371080 {width:100%;height:100%;position:relative;display:flex;flex-direction:column;row-gap:4px;align-items:center;justify-content:flex-start;align-content:flex-start;padding:0px 0px 0px 0px ;border-color:transparent ;border-style:solid ;box-sizing:border-box;border-radius:0px;opacity:1;transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}@media screen and (max-width:1199px) {#rec984737521 .tn-group[data-group-id="174367150126371080"] {left:20px;height:auto;flex-shrink:0;order:;align-self:auto;}#rec984737521 .tn-group[data-group-id="174367150126371080"] #molecule-174367150126371080 {display:flex;}}@media screen and (max-width:959px) {#rec984737521 .tn-group[data-group-id="174367150126371080"] {top:73px;left:20px;height:auto;flex-shrink:0;order:;align-self:auto;}#rec984737521 .tn-group[data-group-id="174367150126371080"] #molecule-174367150126371080 {display:flex;}}@media screen and (max-width:639px) {#rec984737521 .tn-group[data-group-id="174367150126371080"] {left:20px;height:auto;flex-shrink:0;order:;align-self:auto;}#rec984737521 .tn-group[data-group-id="174367150126371080"] #molecule-174367150126371080 {display:flex;}}@media screen and (max-width:479px) {#rec984737521 .tn-group[data-group-id="174367150126371080"] {top:67px;left:20px;width:309px;height:402px;flex-shrink:0;order:;align-self:auto;}#rec984737521 .tn-group[data-group-id="174367150126371080"] #molecule-174367150126371080 {display:flex;align-items:flex-start;}}#rec984737521 .tn-elem[data-elem-id="1745578353614"]{color:#14213d;text-align:left;z-index:5;top:240px;left:0px;width:520px;flex-shrink:0;height:26px;margin:0 0 0 0;}#rec984737521 .tn-elem[data-elem-id="1745578353614"] .tn-atom{color:#14213d;font-size:17px;font-family:'Inter',Arial,sans-serif;line-height:1.55;font-weight:400;border-radius:30px 30px 30px 30px;background-position:center center;--t396-speedhover:0.2s;transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;}#rec984737521 .tn-elem[data-elem-id="1745578353614"] .tn-atom::after{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353614"] .tn-atom .tn-atom__button-text{transition:color var(--t396-speedhover,0s) ease-in-out;color:#14213d;}#rec984737521 .tn-elem[data-elem-id="1745578353614"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353614"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353614"] .tn-atom:hover::after{opacity:0;}#rec984737521 .tn-elem[data-elem-id="1745578353614"] .tn-atom:hover{animation-name:none;}}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353614"] .tn-atom:hover{color:#00c880;}#rec984737521 .tn-elem[data-elem-id="1745578353614"] .tn-atom:hover .tn-atom__button-text{color:#00c880;}}@media screen and (max-width:1199px){#rec984737521 .tn-elem[data-elem-id="1745578353614"]{left:0px;width:520px;height:26px;flex-shrink:0;}#rec984737521 .tn-elem[data-elem-id="1745578353614"] .tn-atom{white-space:normal;background-size:cover;}#rec984737521 .tn-elem[data-elem-id="1745578353614"] .tn-atom::after{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353614"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec984737521 .tn-elem[data-elem-id="1745578353614"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353614"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353614"] .tn-atom:hover::after{opacity:0;}#rec984737521 .tn-elem[data-elem-id="1745578353614"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:959px){#rec984737521 .tn-elem[data-elem-id="1745578353614"]{top:240px;left:0px;width:520px;height:26px;flex-shrink:0;}#rec984737521 .tn-elem[data-elem-id="1745578353614"] .tn-atom{white-space:normal;background-size:cover;}#rec984737521 .tn-elem[data-elem-id="1745578353614"] .tn-atom::after{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353614"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec984737521 .tn-elem[data-elem-id="1745578353614"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353614"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353614"] .tn-atom:hover::after{opacity:0;}#rec984737521 .tn-elem[data-elem-id="1745578353614"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:639px){#rec984737521 .tn-elem[data-elem-id="1745578353614"]{left:0px;width:520px;height:26px;flex-shrink:0;}#rec984737521 .tn-elem[data-elem-id="1745578353614"] .tn-atom{white-space:normal;background-size:cover;}#rec984737521 .tn-elem[data-elem-id="1745578353614"] .tn-atom::after{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353614"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec984737521 .tn-elem[data-elem-id="1745578353614"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353614"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353614"] .tn-atom:hover::after{opacity:0;}#rec984737521 .tn-elem[data-elem-id="1745578353614"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:479px){#rec984737521 .tn-elem[data-elem-id="1745578353614"]{top:370px;left:0px;width:273px;height:26px;flex-shrink:0;}#rec984737521 .tn-elem[data-elem-id="1745578353614"] .tn-atom{white-space:normal;background-size:cover;}#rec984737521 .tn-elem[data-elem-id="1745578353614"] .tn-atom::after{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353614"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec984737521 .tn-elem[data-elem-id="1745578353614"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353614"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353614"] .tn-atom:hover::after{opacity:0;}#rec984737521 .tn-elem[data-elem-id="1745578353614"] .tn-atom:hover{animation-name:none;}}}#rec984737521 .tn-elem[data-elem-id="1745578353605"]{color:#14213d;text-align:left;z-index:6;top:210px;left:0px;width:520px;flex-shrink:0;height:26px;margin:0 0 0 0;}#rec984737521 .tn-elem[data-elem-id="1745578353605"] .tn-atom{color:#14213d;font-size:17px;font-family:'Inter',Arial,sans-serif;line-height:1.55;font-weight:400;border-radius:30px 30px 30px 30px;background-position:center center;--t396-speedhover:0.2s;transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;}#rec984737521 .tn-elem[data-elem-id="1745578353605"] .tn-atom::after{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353605"] .tn-atom .tn-atom__button-text{transition:color var(--t396-speedhover,0s) ease-in-out;color:#14213d;}#rec984737521 .tn-elem[data-elem-id="1745578353605"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353605"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353605"] .tn-atom:hover::after{opacity:0;}#rec984737521 .tn-elem[data-elem-id="1745578353605"] .tn-atom:hover{animation-name:none;}}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353605"] .tn-atom:hover{color:#00c880;}#rec984737521 .tn-elem[data-elem-id="1745578353605"] .tn-atom:hover .tn-atom__button-text{color:#00c880;}}@media screen and (max-width:1199px){#rec984737521 .tn-elem[data-elem-id="1745578353605"]{left:0px;width:520px;height:26px;flex-shrink:0;}#rec984737521 .tn-elem[data-elem-id="1745578353605"] .tn-atom{white-space:normal;background-size:cover;}#rec984737521 .tn-elem[data-elem-id="1745578353605"] .tn-atom::after{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353605"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec984737521 .tn-elem[data-elem-id="1745578353605"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353605"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353605"] .tn-atom:hover::after{opacity:0;}#rec984737521 .tn-elem[data-elem-id="1745578353605"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:959px){#rec984737521 .tn-elem[data-elem-id="1745578353605"]{top:210px;left:0px;width:520px;height:26px;flex-shrink:0;}#rec984737521 .tn-elem[data-elem-id="1745578353605"] .tn-atom{white-space:normal;background-size:cover;}#rec984737521 .tn-elem[data-elem-id="1745578353605"] .tn-atom::after{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353605"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec984737521 .tn-elem[data-elem-id="1745578353605"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353605"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353605"] .tn-atom:hover::after{opacity:0;}#rec984737521 .tn-elem[data-elem-id="1745578353605"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:639px){#rec984737521 .tn-elem[data-elem-id="1745578353605"]{left:0px;width:520px;height:26px;flex-shrink:0;}#rec984737521 .tn-elem[data-elem-id="1745578353605"] .tn-atom{white-space:normal;background-size:cover;}#rec984737521 .tn-elem[data-elem-id="1745578353605"] .tn-atom::after{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353605"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec984737521 .tn-elem[data-elem-id="1745578353605"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353605"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353605"] .tn-atom:hover::after{opacity:0;}#rec984737521 .tn-elem[data-elem-id="1745578353605"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:479px){#rec984737521 .tn-elem[data-elem-id="1745578353605"]{top:340px;left:0px;width:273px;height:26px;flex-shrink:0;}#rec984737521 .tn-elem[data-elem-id="1745578353605"] .tn-atom{white-space:normal;background-size:cover;}#rec984737521 .tn-elem[data-elem-id="1745578353605"] .tn-atom::after{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353605"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec984737521 .tn-elem[data-elem-id="1745578353605"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353605"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353605"] .tn-atom:hover::after{opacity:0;}#rec984737521 .tn-elem[data-elem-id="1745578353605"] .tn-atom:hover{animation-name:none;}}}#rec984737521 .tn-elem[data-elem-id="1745578353597"]{color:#14213d;text-align:left;z-index:7;top:180px;left:0px;width:520px;flex-shrink:0;height:26px;margin:0 0 0 0;}#rec984737521 .tn-elem[data-elem-id="1745578353597"] .tn-atom{color:#14213d;font-size:17px;font-family:'Inter',Arial,sans-serif;line-height:1.55;font-weight:400;border-radius:30px 30px 30px 30px;background-position:center center;--t396-speedhover:0.2s;transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;}#rec984737521 .tn-elem[data-elem-id="1745578353597"] .tn-atom::after{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353597"] .tn-atom .tn-atom__button-text{transition:color var(--t396-speedhover,0s) ease-in-out;color:#14213d;}#rec984737521 .tn-elem[data-elem-id="1745578353597"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353597"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353597"] .tn-atom:hover::after{opacity:0;}#rec984737521 .tn-elem[data-elem-id="1745578353597"] .tn-atom:hover{animation-name:none;}}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353597"] .tn-atom:hover{color:#00c880;}#rec984737521 .tn-elem[data-elem-id="1745578353597"] .tn-atom:hover .tn-atom__button-text{color:#00c880;}}@media screen and (max-width:1199px){#rec984737521 .tn-elem[data-elem-id="1745578353597"]{left:0px;width:520px;height:26px;flex-shrink:0;}#rec984737521 .tn-elem[data-elem-id="1745578353597"] .tn-atom{white-space:normal;background-size:cover;}#rec984737521 .tn-elem[data-elem-id="1745578353597"] .tn-atom::after{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353597"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec984737521 .tn-elem[data-elem-id="1745578353597"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353597"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353597"] .tn-atom:hover::after{opacity:0;}#rec984737521 .tn-elem[data-elem-id="1745578353597"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:959px){#rec984737521 .tn-elem[data-elem-id="1745578353597"]{top:180px;left:0px;width:520px;height:26px;flex-shrink:0;}#rec984737521 .tn-elem[data-elem-id="1745578353597"] .tn-atom{white-space:normal;background-size:cover;}#rec984737521 .tn-elem[data-elem-id="1745578353597"] .tn-atom::after{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353597"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec984737521 .tn-elem[data-elem-id="1745578353597"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353597"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353597"] .tn-atom:hover::after{opacity:0;}#rec984737521 .tn-elem[data-elem-id="1745578353597"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:639px){#rec984737521 .tn-elem[data-elem-id="1745578353597"]{left:0px;width:520px;height:26px;flex-shrink:0;}#rec984737521 .tn-elem[data-elem-id="1745578353597"] .tn-atom{white-space:normal;background-size:cover;}#rec984737521 .tn-elem[data-elem-id="1745578353597"] .tn-atom::after{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353597"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec984737521 .tn-elem[data-elem-id="1745578353597"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353597"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353597"] .tn-atom:hover::after{opacity:0;}#rec984737521 .tn-elem[data-elem-id="1745578353597"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:479px){#rec984737521 .tn-elem[data-elem-id="1745578353597"]{top:310px;left:0px;width:273px;height:26px;flex-shrink:0;}#rec984737521 .tn-elem[data-elem-id="1745578353597"] .tn-atom{white-space:normal;background-size:cover;}#rec984737521 .tn-elem[data-elem-id="1745578353597"] .tn-atom::after{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353597"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec984737521 .tn-elem[data-elem-id="1745578353597"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353597"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353597"] .tn-atom:hover::after{opacity:0;}#rec984737521 .tn-elem[data-elem-id="1745578353597"] .tn-atom:hover{animation-name:none;}}}#rec984737521 .tn-elem[data-elem-id="1745588454963"]{color:#14213d;text-align:left;z-index:8;top:150px;left:0px;width:520px;flex-shrink:0;height:26px;margin:0 0 0 0;}#rec984737521 .tn-elem[data-elem-id="1745588454963"] .tn-atom{color:#14213d;font-size:17px;font-family:'Inter',Arial,sans-serif;line-height:1.55;font-weight:400;border-radius:30px 30px 30px 30px;background-position:center center;--t396-speedhover:0.2s;transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;}#rec984737521 .tn-elem[data-elem-id="1745588454963"] .tn-atom::after{display:none;}#rec984737521 .tn-elem[data-elem-id="1745588454963"] .tn-atom .tn-atom__button-text{transition:color var(--t396-speedhover,0s) ease-in-out;color:#14213d;}#rec984737521 .tn-elem[data-elem-id="1745588454963"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737521 .tn-elem[data-elem-id="1745588454963"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745588454963"] .tn-atom:hover::after{opacity:0;}#rec984737521 .tn-elem[data-elem-id="1745588454963"] .tn-atom:hover{animation-name:none;}}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745588454963"] .tn-atom:hover{color:#00c880;}#rec984737521 .tn-elem[data-elem-id="1745588454963"] .tn-atom:hover .tn-atom__button-text{color:#00c880;}}@media screen and (max-width:1199px){#rec984737521 .tn-elem[data-elem-id="1745588454963"]{left:0px;width:520px;height:26px;flex-shrink:0;}#rec984737521 .tn-elem[data-elem-id="1745588454963"] .tn-atom{white-space:normal;background-size:cover;}#rec984737521 .tn-elem[data-elem-id="1745588454963"] .tn-atom::after{display:none;}#rec984737521 .tn-elem[data-elem-id="1745588454963"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec984737521 .tn-elem[data-elem-id="1745588454963"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737521 .tn-elem[data-elem-id="1745588454963"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745588454963"] .tn-atom:hover::after{opacity:0;}#rec984737521 .tn-elem[data-elem-id="1745588454963"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:959px){#rec984737521 .tn-elem[data-elem-id="1745588454963"]{top:150px;left:0px;width:520px;height:26px;flex-shrink:0;}#rec984737521 .tn-elem[data-elem-id="1745588454963"] .tn-atom{white-space:normal;background-size:cover;}#rec984737521 .tn-elem[data-elem-id="1745588454963"] .tn-atom::after{display:none;}#rec984737521 .tn-elem[data-elem-id="1745588454963"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec984737521 .tn-elem[data-elem-id="1745588454963"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737521 .tn-elem[data-elem-id="1745588454963"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745588454963"] .tn-atom:hover::after{opacity:0;}#rec984737521 .tn-elem[data-elem-id="1745588454963"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:639px){#rec984737521 .tn-elem[data-elem-id="1745588454963"]{left:0px;width:520px;height:26px;flex-shrink:0;}#rec984737521 .tn-elem[data-elem-id="1745588454963"] .tn-atom{white-space:normal;background-size:cover;}#rec984737521 .tn-elem[data-elem-id="1745588454963"] .tn-atom::after{display:none;}#rec984737521 .tn-elem[data-elem-id="1745588454963"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec984737521 .tn-elem[data-elem-id="1745588454963"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737521 .tn-elem[data-elem-id="1745588454963"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745588454963"] .tn-atom:hover::after{opacity:0;}#rec984737521 .tn-elem[data-elem-id="1745588454963"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:479px){#rec984737521 .tn-elem[data-elem-id="1745588454963"]{top:254px;left:0px;width:273px;height:52px;flex-shrink:0;}#rec984737521 .tn-elem[data-elem-id="1745588454963"] .tn-atom{white-space:normal;background-size:cover;}#rec984737521 .tn-elem[data-elem-id="1745588454963"] .tn-atom::after{display:none;}#rec984737521 .tn-elem[data-elem-id="1745588454963"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec984737521 .tn-elem[data-elem-id="1745588454963"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737521 .tn-elem[data-elem-id="1745588454963"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745588454963"] .tn-atom:hover::after{opacity:0;}#rec984737521 .tn-elem[data-elem-id="1745588454963"] .tn-atom:hover{animation-name:none;}}}#rec984737521 .tn-elem[data-elem-id="1745578353589"]{color:#14213d;text-align:left;z-index:9;top:120px;left:0px;width:520px;flex-shrink:0;height:26px;margin:0 0 0 0;}#rec984737521 .tn-elem[data-elem-id="1745578353589"] .tn-atom{color:#14213d;font-size:17px;font-family:'Inter',Arial,sans-serif;line-height:1.55;font-weight:400;border-radius:30px 30px 30px 30px;background-position:center center;--t396-speedhover:0.2s;transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;}#rec984737521 .tn-elem[data-elem-id="1745578353589"] .tn-atom::after{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353589"] .tn-atom .tn-atom__button-text{transition:color var(--t396-speedhover,0s) ease-in-out;color:#14213d;}#rec984737521 .tn-elem[data-elem-id="1745578353589"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353589"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353589"] .tn-atom:hover::after{opacity:0;}#rec984737521 .tn-elem[data-elem-id="1745578353589"] .tn-atom:hover{animation-name:none;}}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353589"] .tn-atom:hover{color:#00c880;}#rec984737521 .tn-elem[data-elem-id="1745578353589"] .tn-atom:hover .tn-atom__button-text{color:#00c880;}}@media screen and (max-width:1199px){#rec984737521 .tn-elem[data-elem-id="1745578353589"]{left:0px;width:520px;height:26px;flex-shrink:0;}#rec984737521 .tn-elem[data-elem-id="1745578353589"] .tn-atom{white-space:normal;background-size:cover;}#rec984737521 .tn-elem[data-elem-id="1745578353589"] .tn-atom::after{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353589"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec984737521 .tn-elem[data-elem-id="1745578353589"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353589"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353589"] .tn-atom:hover::after{opacity:0;}#rec984737521 .tn-elem[data-elem-id="1745578353589"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:959px){#rec984737521 .tn-elem[data-elem-id="1745578353589"]{top:120px;left:0px;width:520px;height:26px;flex-shrink:0;}#rec984737521 .tn-elem[data-elem-id="1745578353589"] .tn-atom{white-space:normal;background-size:cover;}#rec984737521 .tn-elem[data-elem-id="1745578353589"] .tn-atom::after{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353589"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec984737521 .tn-elem[data-elem-id="1745578353589"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353589"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353589"] .tn-atom:hover::after{opacity:0;}#rec984737521 .tn-elem[data-elem-id="1745578353589"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:639px){#rec984737521 .tn-elem[data-elem-id="1745578353589"]{left:0px;width:520px;height:26px;flex-shrink:0;}#rec984737521 .tn-elem[data-elem-id="1745578353589"] .tn-atom{white-space:normal;background-size:cover;}#rec984737521 .tn-elem[data-elem-id="1745578353589"] .tn-atom::after{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353589"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec984737521 .tn-elem[data-elem-id="1745578353589"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353589"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353589"] .tn-atom:hover::after{opacity:0;}#rec984737521 .tn-elem[data-elem-id="1745578353589"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:479px){#rec984737521 .tn-elem[data-elem-id="1745578353589"]{top:198px;left:0px;width:273px;height:52px;flex-shrink:0;}#rec984737521 .tn-elem[data-elem-id="1745578353589"] .tn-atom{white-space:normal;background-size:cover;}#rec984737521 .tn-elem[data-elem-id="1745578353589"] .tn-atom::after{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353589"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec984737521 .tn-elem[data-elem-id="1745578353589"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353589"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353589"] .tn-atom:hover::after{opacity:0;}#rec984737521 .tn-elem[data-elem-id="1745578353589"] .tn-atom:hover{animation-name:none;}}}#rec984737521 .tn-elem[data-elem-id="1745578353582"]{color:#14213d;text-align:left;z-index:10;top:90px;left:0px;width:520px;flex-shrink:0;height:26px;margin:0 0 0 0;}#rec984737521 .tn-elem[data-elem-id="1745578353582"] .tn-atom{color:#14213d;font-size:17px;font-family:'Inter',Arial,sans-serif;line-height:1.55;font-weight:400;border-radius:30px 30px 30px 30px;background-position:center center;--t396-speedhover:0.2s;transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;}#rec984737521 .tn-elem[data-elem-id="1745578353582"] .tn-atom::after{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353582"] .tn-atom .tn-atom__button-text{transition:color var(--t396-speedhover,0s) ease-in-out;color:#14213d;}#rec984737521 .tn-elem[data-elem-id="1745578353582"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353582"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353582"] .tn-atom:hover::after{opacity:0;}#rec984737521 .tn-elem[data-elem-id="1745578353582"] .tn-atom:hover{animation-name:none;}}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353582"] .tn-atom:hover{color:#00c880;}#rec984737521 .tn-elem[data-elem-id="1745578353582"] .tn-atom:hover .tn-atom__button-text{color:#00c880;}}@media screen and (max-width:1199px){#rec984737521 .tn-elem[data-elem-id="1745578353582"]{left:0px;width:520px;height:26px;flex-shrink:0;}#rec984737521 .tn-elem[data-elem-id="1745578353582"] .tn-atom{white-space:normal;background-size:cover;}#rec984737521 .tn-elem[data-elem-id="1745578353582"] .tn-atom::after{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353582"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec984737521 .tn-elem[data-elem-id="1745578353582"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353582"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353582"] .tn-atom:hover::after{opacity:0;}#rec984737521 .tn-elem[data-elem-id="1745578353582"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:959px){#rec984737521 .tn-elem[data-elem-id="1745578353582"]{top:90px;left:0px;width:520px;height:26px;flex-shrink:0;}#rec984737521 .tn-elem[data-elem-id="1745578353582"] .tn-atom{white-space:normal;background-size:cover;}#rec984737521 .tn-elem[data-elem-id="1745578353582"] .tn-atom::after{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353582"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec984737521 .tn-elem[data-elem-id="1745578353582"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353582"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353582"] .tn-atom:hover::after{opacity:0;}#rec984737521 .tn-elem[data-elem-id="1745578353582"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:639px){#rec984737521 .tn-elem[data-elem-id="1745578353582"]{left:0px;width:520px;height:26px;flex-shrink:0;}#rec984737521 .tn-elem[data-elem-id="1745578353582"] .tn-atom{white-space:normal;background-size:cover;}#rec984737521 .tn-elem[data-elem-id="1745578353582"] .tn-atom::after{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353582"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec984737521 .tn-elem[data-elem-id="1745578353582"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353582"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353582"] .tn-atom:hover::after{opacity:0;}#rec984737521 .tn-elem[data-elem-id="1745578353582"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:479px){#rec984737521 .tn-elem[data-elem-id="1745578353582"]{top:142px;left:0px;width:273px;height:52px;flex-shrink:0;}#rec984737521 .tn-elem[data-elem-id="1745578353582"] .tn-atom{white-space:normal;background-size:cover;}#rec984737521 .tn-elem[data-elem-id="1745578353582"] .tn-atom::after{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353582"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec984737521 .tn-elem[data-elem-id="1745578353582"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353582"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353582"] .tn-atom:hover::after{opacity:0;}#rec984737521 .tn-elem[data-elem-id="1745578353582"] .tn-atom:hover{animation-name:none;}}}#rec984737521 .tn-elem[data-elem-id="1745578353573"]{color:#14213d;text-align:left;z-index:11;top:60px;left:0px;width:520px;flex-shrink:0;height:26px;margin:0 0 0 0;}#rec984737521 .tn-elem[data-elem-id="1745578353573"] .tn-atom{color:#14213d;font-size:17px;font-family:'Inter',Arial,sans-serif;line-height:1.55;font-weight:400;border-radius:30px 30px 30px 30px;background-position:center center;--t396-speedhover:0.2s;transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;}#rec984737521 .tn-elem[data-elem-id="1745578353573"] .tn-atom::after{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353573"] .tn-atom .tn-atom__button-text{transition:color var(--t396-speedhover,0s) ease-in-out;color:#14213d;}#rec984737521 .tn-elem[data-elem-id="1745578353573"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353573"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353573"] .tn-atom:hover::after{opacity:0;}#rec984737521 .tn-elem[data-elem-id="1745578353573"] .tn-atom:hover{animation-name:none;}}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353573"] .tn-atom:hover{color:#00c880;}#rec984737521 .tn-elem[data-elem-id="1745578353573"] .tn-atom:hover .tn-atom__button-text{color:#00c880;}}@media screen and (max-width:1199px){#rec984737521 .tn-elem[data-elem-id="1745578353573"]{left:0px;width:520px;height:26px;flex-shrink:0;}#rec984737521 .tn-elem[data-elem-id="1745578353573"] .tn-atom{white-space:normal;background-size:cover;}#rec984737521 .tn-elem[data-elem-id="1745578353573"] .tn-atom::after{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353573"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec984737521 .tn-elem[data-elem-id="1745578353573"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353573"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353573"] .tn-atom:hover::after{opacity:0;}#rec984737521 .tn-elem[data-elem-id="1745578353573"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:959px){#rec984737521 .tn-elem[data-elem-id="1745578353573"]{top:60px;left:0px;width:520px;height:26px;flex-shrink:0;}#rec984737521 .tn-elem[data-elem-id="1745578353573"] .tn-atom{white-space:normal;background-size:cover;}#rec984737521 .tn-elem[data-elem-id="1745578353573"] .tn-atom::after{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353573"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec984737521 .tn-elem[data-elem-id="1745578353573"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353573"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353573"] .tn-atom:hover::after{opacity:0;}#rec984737521 .tn-elem[data-elem-id="1745578353573"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:639px){#rec984737521 .tn-elem[data-elem-id="1745578353573"]{left:0px;width:520px;height:26px;flex-shrink:0;}#rec984737521 .tn-elem[data-elem-id="1745578353573"] .tn-atom{white-space:normal;background-size:cover;}#rec984737521 .tn-elem[data-elem-id="1745578353573"] .tn-atom::after{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353573"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec984737521 .tn-elem[data-elem-id="1745578353573"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353573"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353573"] .tn-atom:hover::after{opacity:0;}#rec984737521 .tn-elem[data-elem-id="1745578353573"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:479px){#rec984737521 .tn-elem[data-elem-id="1745578353573"]{top:86px;left:0px;width:273px;height:52px;flex-shrink:0;}#rec984737521 .tn-elem[data-elem-id="1745578353573"] .tn-atom{white-space:normal;background-size:cover;}#rec984737521 .tn-elem[data-elem-id="1745578353573"] .tn-atom::after{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353573"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec984737521 .tn-elem[data-elem-id="1745578353573"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353573"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353573"] .tn-atom:hover::after{opacity:0;}#rec984737521 .tn-elem[data-elem-id="1745578353573"] .tn-atom:hover{animation-name:none;}}}#rec984737521 .tn-elem[data-elem-id="1745578353566"]{color:#14213d;text-align:left;z-index:12;top:30px;left:0px;width:520px;flex-shrink:0;height:26px;margin:0 0 0 0;}#rec984737521 .tn-elem[data-elem-id="1745578353566"] .tn-atom{color:#14213d;font-size:17px;font-family:'Inter',Arial,sans-serif;line-height:1.55;font-weight:400;border-radius:30px 30px 30px 30px;background-position:center center;--t396-speedhover:0.2s;transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;}#rec984737521 .tn-elem[data-elem-id="1745578353566"] .tn-atom::after{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353566"] .tn-atom .tn-atom__button-text{transition:color var(--t396-speedhover,0s) ease-in-out;color:#14213d;}#rec984737521 .tn-elem[data-elem-id="1745578353566"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353566"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353566"] .tn-atom:hover::after{opacity:0;}#rec984737521 .tn-elem[data-elem-id="1745578353566"] .tn-atom:hover{animation-name:none;}}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353566"] .tn-atom:hover{color:#00c880;}#rec984737521 .tn-elem[data-elem-id="1745578353566"] .tn-atom:hover .tn-atom__button-text{color:#00c880;}}@media screen and (max-width:1199px){#rec984737521 .tn-elem[data-elem-id="1745578353566"]{left:0px;width:520px;height:26px;flex-shrink:0;}#rec984737521 .tn-elem[data-elem-id="1745578353566"] .tn-atom{white-space:normal;background-size:cover;}#rec984737521 .tn-elem[data-elem-id="1745578353566"] .tn-atom::after{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353566"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec984737521 .tn-elem[data-elem-id="1745578353566"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353566"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353566"] .tn-atom:hover::after{opacity:0;}#rec984737521 .tn-elem[data-elem-id="1745578353566"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:959px){#rec984737521 .tn-elem[data-elem-id="1745578353566"]{top:30px;left:0px;width:520px;height:26px;flex-shrink:0;}#rec984737521 .tn-elem[data-elem-id="1745578353566"] .tn-atom{white-space:normal;background-size:cover;}#rec984737521 .tn-elem[data-elem-id="1745578353566"] .tn-atom::after{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353566"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec984737521 .tn-elem[data-elem-id="1745578353566"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353566"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353566"] .tn-atom:hover::after{opacity:0;}#rec984737521 .tn-elem[data-elem-id="1745578353566"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:639px){#rec984737521 .tn-elem[data-elem-id="1745578353566"]{left:0px;width:520px;height:26px;flex-shrink:0;}#rec984737521 .tn-elem[data-elem-id="1745578353566"] .tn-atom{white-space:normal;background-size:cover;}#rec984737521 .tn-elem[data-elem-id="1745578353566"] .tn-atom::after{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353566"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec984737521 .tn-elem[data-elem-id="1745578353566"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353566"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353566"] .tn-atom:hover::after{opacity:0;}#rec984737521 .tn-elem[data-elem-id="1745578353566"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:479px){#rec984737521 .tn-elem[data-elem-id="1745578353566"]{top:56px;left:0px;width:273px;height:26px;flex-shrink:0;}#rec984737521 .tn-elem[data-elem-id="1745578353566"] .tn-atom{white-space:normal;background-size:cover;}#rec984737521 .tn-elem[data-elem-id="1745578353566"] .tn-atom::after{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353566"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec984737521 .tn-elem[data-elem-id="1745578353566"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353566"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353566"] .tn-atom:hover::after{opacity:0;}#rec984737521 .tn-elem[data-elem-id="1745578353566"] .tn-atom:hover{animation-name:none;}}}#rec984737521 .tn-elem[data-elem-id="1745578353556"]{color:#14213d;text-align:left;z-index:13;top:0px;left:0px;width:520px;flex-shrink:0;height:26px;margin:0 0 0 0;}#rec984737521 .tn-elem[data-elem-id="1745578353556"] .tn-atom{color:#14213d;font-size:17px;font-family:'Inter',Arial,sans-serif;line-height:1.55;font-weight:400;border-radius:30px 30px 30px 30px;background-position:center center;--t396-speedhover:0.2s;transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;}#rec984737521 .tn-elem[data-elem-id="1745578353556"] .tn-atom::after{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353556"] .tn-atom .tn-atom__button-text{transition:color var(--t396-speedhover,0s) ease-in-out;color:#14213d;}#rec984737521 .tn-elem[data-elem-id="1745578353556"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353556"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353556"] .tn-atom:hover::after{opacity:0;}#rec984737521 .tn-elem[data-elem-id="1745578353556"] .tn-atom:hover{animation-name:none;}}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353556"] .tn-atom:hover{color:#00c880;}#rec984737521 .tn-elem[data-elem-id="1745578353556"] .tn-atom:hover .tn-atom__button-text{color:#00c880;}}@media screen and (max-width:1199px){#rec984737521 .tn-elem[data-elem-id="1745578353556"]{left:0px;width:520px;height:26px;flex-shrink:0;}#rec984737521 .tn-elem[data-elem-id="1745578353556"] .tn-atom{white-space:normal;background-size:cover;}#rec984737521 .tn-elem[data-elem-id="1745578353556"] .tn-atom::after{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353556"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec984737521 .tn-elem[data-elem-id="1745578353556"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353556"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353556"] .tn-atom:hover::after{opacity:0;}#rec984737521 .tn-elem[data-elem-id="1745578353556"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:959px){#rec984737521 .tn-elem[data-elem-id="1745578353556"]{top:0px;left:0px;width:520px;height:26px;flex-shrink:0;}#rec984737521 .tn-elem[data-elem-id="1745578353556"] .tn-atom{white-space:normal;background-size:cover;}#rec984737521 .tn-elem[data-elem-id="1745578353556"] .tn-atom::after{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353556"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec984737521 .tn-elem[data-elem-id="1745578353556"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353556"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353556"] .tn-atom:hover::after{opacity:0;}#rec984737521 .tn-elem[data-elem-id="1745578353556"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:639px){#rec984737521 .tn-elem[data-elem-id="1745578353556"]{left:0px;width:520px;height:26px;flex-shrink:0;}#rec984737521 .tn-elem[data-elem-id="1745578353556"] .tn-atom{white-space:normal;background-size:cover;}#rec984737521 .tn-elem[data-elem-id="1745578353556"] .tn-atom::after{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353556"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec984737521 .tn-elem[data-elem-id="1745578353556"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353556"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353556"] .tn-atom:hover::after{opacity:0;}#rec984737521 .tn-elem[data-elem-id="1745578353556"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:479px){#rec984737521 .tn-elem[data-elem-id="1745578353556"]{top:0px;left:0px;width:273px;height:52px;flex-shrink:0;}#rec984737521 .tn-elem[data-elem-id="1745578353556"] .tn-atom{white-space:normal;background-size:cover;}#rec984737521 .tn-elem[data-elem-id="1745578353556"] .tn-atom::after{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353556"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec984737521 .tn-elem[data-elem-id="1745578353556"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737521 .tn-elem[data-elem-id="1745578353556"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737521 .tn-elem[data-elem-id="1745578353556"] .tn-atom:hover::after{opacity:0;}#rec984737521 .tn-elem[data-elem-id="1745578353556"] .tn-atom:hover{animation-name:none;}}}#rec984737521 .tn-elem[data-elem-id="1743670770549"]{color:#14213d;z-index:14;top:20px;left:20px;width:719px;flex-shrink:0;height:auto;margin:0 0 0 0;}#rec984737521 .tn-elem[data-elem-id="1743670770549"] .tn-atom{vertical-align:middle;color:#14213d;font-size:24px;font-family:'Inter',Arial,sans-serif;line-height:1.55;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec984737521 .tn-elem[data-elem-id="1743670770549"]{left:20px;width:580px;height:auto;flex-shrink:0;}}@media screen and (max-width:959px){#rec984737521 .tn-elem[data-elem-id="1743670770549"]{top:20px;left:20px;width:441px;height:auto;flex-shrink:0;}}@media screen and (max-width:639px){#rec984737521 .tn-elem[data-elem-id="1743670770549"]{left:20px;width:419px;height:auto;flex-shrink:0;}}@media screen and (max-width:479px){#rec984737521 .tn-elem[data-elem-id="1743670770549"]{top:20px;left:20px;width:100%;height:auto;flex-shrink:0;}#rec984737521 .tn-elem[data-elem-id="1743670770549"] .tn-atom{vertical-align:middle;white-space:normal;font-size:20px;background-size:cover;}}</style> <div class='t396'> <div class="t396__artboard" data-artboard-recid="984737521" data-artboard-screens="360,480,640,960,1200" data-artboard-height="406" data-artboard-valign="center" data-artboard-upscale="grid" data-artboard-height-res-360="480"> <div class="t396__carrier" data-artboard-recid="984737521"></div> <div class="t396__filter" data-artboard-recid="984737521"></div> <div
class="t396__group tn-group tn-group__984737521174367081259945760 t396__group-flex " data-fields="top,left,container" data-group-id="174367081259945760" data-group-type-value="physical" data-group-top-value="24" data-group-left-value="220" data-group-padding="20px 20px 20px 20px" data-group-flex="auto" data-group-flexdirection="column" data-group-flexalignitems="flex-start" data-group-widthmode="fixed" data-group-heightmode="fixed" data-group-container-value="grid" data-group-height-value="361" data-group-width-value="759" data-group-topunits-value="px" data-group-leftunits-value="px" data-group-top-res-360-value="0" data-group-left-res-360-value="0" data-group-height-res-360-value="477" data-group-width-res-360-value="360" data-group-widthmode-res-360="fixed" data-group-heightmode-res-360="fixed" data-group-container-res-360-value="grid" data-group-left-res-480-value="10" data-group-height-res-480-value="369" data-group-width-res-480-value="459" data-group-widthmode-res-480="fixed" data-group-heightmode-res-480="fixed" data-group-top-res-640-value="17" data-group-left-res-640-value="90" data-group-height-res-640-value="363" data-group-width-res-640-value="481" data-group-widthmode-res-640="fixed" data-group-heightmode-res-640="fixed" data-group-left-res-960-value="170" data-group-height-res-960-value="362" data-group-width-res-960-value="620" data-group-widthmode-res-960="fixed" data-group-heightmode-res-960="fixed"> <div
class="tn-molecule"
id="molecule-174367081259945760"> <div class='t396__elem tn-elem t396__elem-flex tn-elem__9847375211743670770549' data-elem-id='1743670770549' data-elem-type='text' data-field-top-value="44" data-field-left-value="240" data-field-height-value="37" data-field-width-value="719" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-widthmode-value="fixed" data-field-heightmode-value="fixed" data-field-fontsize-value="24" data-field-top-res-360-value="20" data-field-left-res-360-value="20" data-field-height-res-360-value="31" data-field-width-res-360-value="320" data-field-container-res-360-value="grid" data-field-heightunits-res-360-value="px" data-field-textfit-res-360-value="autoheight" data-field-widthmode-res-360-value="fill" data-field-heightmode-res-360-value="fixed" data-field-fontsize-res-360-value="20" data-field-left-res-480-value="30" data-field-height-res-480-value="37" data-field-width-res-480-value="419" data-field-top-res-640-value="37" data-field-left-res-640-value="110" data-field-height-res-640-value="37" data-field-width-res-640-value="441" data-field-left-res-960-value="190" data-field-height-res-960-value="37" data-field-width-res-960-value="580"> <div class='tn-atom'field='tn_text_1743670770549'><strong>Содержание статьи</strong></div> </div> <div
class="t396__group tn-group t396__elem-flex tn-group__984737521174367150126371080 t396__group-flex " data-fields="top,left,container" data-group-id="174367150126371080" data-group-type-value="physical" data-group-top-value="97" data-group-left-value="240" data-group-padding="0 0 0 0" data-group-flex="auto" data-group-flexdirection="column" data-group-flexalignitems="center" data-group-widthmode="fixed" data-group-heightmode="hug" data-group-container-value="grid" data-group-height-value="266" data-group-width-value="520" data-group-topunits-value="px" data-group-leftunits-value="px" data-group-top-res-360-value="67" data-group-left-res-360-value="20" data-group-height-res-360-value="402" data-group-width-res-360-value="309" data-group-widthmode-res-360="fixed" data-group-heightmode-res-360="fixed" data-group-container-res-360-value="grid" data-group-left-res-480-value="30" data-group-height-res-480-value="266" data-group-top-res-640-value="90" data-group-left-res-640-value="110" data-group-height-res-640-value="266" data-group-left-res-960-value="190" data-group-height-res-960-value="266"> <div
class="tn-molecule"
id="molecule-174367150126371080"> <div class='t396__elem tn-elem t396__elem-flex tn-elem__9847375211745578353556' data-elem-id='1745578353556' data-elem-type='button' data-field-top-value="97" data-field-left-value="240" data-field-height-value="26" data-field-width-value="520" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-widthmode-value="fixed" data-field-heightmode-value="fixed" data-field-fontsize-value="17" data-field-top-res-360-value="67" data-field-left-res-360-value="20" data-field-height-res-360-value="52" data-field-width-res-360-value="273" data-field-heightmode-res-360-value="fixed" data-field-left-res-480-value="30" data-field-height-res-480-value="26" data-field-width-res-480-value="520" data-field-top-res-640-value="90" data-field-left-res-640-value="110" data-field-height-res-640-value="26" data-field-width-res-640-value="520" data-field-left-res-960-value="190" data-field-height-res-960-value="26" data-field-width-res-960-value="520"> <a class='tn-atom' href="#rec984737541"> <div class='tn-atom__button-content'> <span class="tn-atom__button-text">1. Что такое Kafka и зачем она нужна?</span> </div> <span class="tn-atom__button-border"></span> </a> </div> <div class='t396__elem tn-elem t396__elem-flex tn-elem__9847375211745578353566' data-elem-id='1745578353566' data-elem-type='button' data-field-top-value="127" data-field-left-value="240" data-field-height-value="26" data-field-width-value="520" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-widthmode-value="fixed" data-field-heightmode-value="fixed" data-field-fontsize-value="17" data-field-top-res-360-value="123" data-field-left-res-360-value="20" data-field-height-res-360-value="26" data-field-width-res-360-value="273" data-field-heightmode-res-360-value="fixed" data-field-left-res-480-value="30" data-field-height-res-480-value="26" data-field-width-res-480-value="520" data-field-top-res-640-value="120" data-field-left-res-640-value="110" data-field-height-res-640-value="26" data-field-width-res-640-value="520" data-field-left-res-960-value="190" data-field-height-res-960-value="26" data-field-width-res-960-value="520"> <a class='tn-atom' href="#rec984737716"> <div class='tn-atom__button-content'> <span class="tn-atom__button-text">2. Системные требования</span> </div> <span class="tn-atom__button-border"></span> </a> </div> <div class='t396__elem tn-elem t396__elem-flex tn-elem__9847375211745578353573' data-elem-id='1745578353573' data-elem-type='button' data-field-top-value="157" data-field-left-value="240" data-field-height-value="26" data-field-width-value="520" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-widthmode-value="fixed" data-field-heightmode-value="fixed" data-field-fontsize-value="17" data-field-top-res-360-value="153" data-field-left-res-360-value="20" data-field-height-res-360-value="52" data-field-width-res-360-value="273" data-field-heightmode-res-360-value="fixed" data-field-left-res-480-value="30" data-field-height-res-480-value="26" data-field-width-res-480-value="520" data-field-top-res-640-value="150" data-field-left-res-640-value="110" data-field-height-res-640-value="26" data-field-width-res-640-value="520" data-field-left-res-960-value="190" data-field-height-res-960-value="26" data-field-width-res-960-value="520"> <a class='tn-atom' href="#rec985087076"> <div class='tn-atom__button-content'> <span class="tn-atom__button-text">3. Установка и настройка на Windows</span> </div> <span class="tn-atom__button-border"></span> </a> </div> <div class='t396__elem tn-elem t396__elem-flex tn-elem__9847375211745578353582' data-elem-id='1745578353582' data-elem-type='button' data-field-top-value="187" data-field-left-value="240" data-field-height-value="26" data-field-width-value="520" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-widthmode-value="fixed" data-field-heightmode-value="fixed" data-field-fontsize-value="17" data-field-top-res-360-value="209" data-field-left-res-360-value="20" data-field-height-res-360-value="52" data-field-width-res-360-value="273" data-field-heightmode-res-360-value="fixed" data-field-left-res-480-value="30" data-field-height-res-480-value="26" data-field-width-res-480-value="520" data-field-top-res-640-value="180" data-field-left-res-640-value="110" data-field-height-res-640-value="26" data-field-width-res-640-value="520" data-field-left-res-960-value="190" data-field-height-res-960-value="26" data-field-width-res-960-value="520"> <a class='tn-atom' href="#rec985144631"> <div class='tn-atom__button-content'> <span class="tn-atom__button-text">4. Установка и настройка на Ubuntu</span> </div> <span class="tn-atom__button-border"></span> </a> </div> <div class='t396__elem tn-elem t396__elem-flex tn-elem__9847375211745578353589' data-elem-id='1745578353589' data-elem-type='button' data-field-top-value="217" data-field-left-value="240" data-field-height-value="26" data-field-width-value="520" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-widthmode-value="fixed" data-field-heightmode-value="fixed" data-field-fontsize-value="17" data-field-top-res-360-value="265" data-field-left-res-360-value="20" data-field-height-res-360-value="52" data-field-width-res-360-value="273" data-field-heightmode-res-360-value="fixed" data-field-left-res-480-value="30" data-field-height-res-480-value="26" data-field-width-res-480-value="520" data-field-top-res-640-value="210" data-field-left-res-640-value="110" data-field-height-res-640-value="26" data-field-width-res-640-value="520" data-field-left-res-960-value="190" data-field-height-res-960-value="26" data-field-width-res-960-value="520"> <a class='tn-atom' href="#rec986044201"> <div class='tn-atom__button-content'> <span class="tn-atom__button-text">5. Установка и настройка на macOS</span> </div> <span class="tn-atom__button-border"></span> </a> </div> <div class='t396__elem tn-elem t396__elem-flex tn-elem__9847375211745588454963' data-elem-id='1745588454963' data-elem-type='button' data-field-top-value="247" data-field-left-value="240" data-field-height-value="26" data-field-width-value="520" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-widthmode-value="fixed" data-field-heightmode-value="fixed" data-field-fontsize-value="17" data-field-top-res-360-value="321" data-field-left-res-360-value="20" data-field-height-res-360-value="52" data-field-width-res-360-value="273" data-field-heightmode-res-360-value="fixed" data-field-left-res-480-value="30" data-field-height-res-480-value="26" data-field-width-res-480-value="520" data-field-top-res-640-value="240" data-field-left-res-640-value="110" data-field-height-res-640-value="26" data-field-width-res-640-value="520" data-field-left-res-960-value="190" data-field-height-res-960-value="26" data-field-width-res-960-value="520"> <a class='tn-atom' href="#rec986044446"> <div class='tn-atom__button-content'> <span class="tn-atom__button-text">6. Установка и настройка в Docker</span> </div> <span class="tn-atom__button-border"></span> </a> </div> <div class='t396__elem tn-elem t396__elem-flex tn-elem__9847375211745578353597' data-elem-id='1745578353597' data-elem-type='button' data-field-top-value="277" data-field-left-value="240" data-field-height-value="26" data-field-width-value="520" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-widthmode-value="fixed" data-field-heightmode-value="fixed" data-field-fontsize-value="17" data-field-top-res-360-value="377" data-field-left-res-360-value="20" data-field-height-res-360-value="26" data-field-width-res-360-value="273" data-field-heightmode-res-360-value="fixed" data-field-left-res-480-value="30" data-field-height-res-480-value="26" data-field-width-res-480-value="520" data-field-top-res-640-value="270" data-field-left-res-640-value="110" data-field-height-res-640-value="26" data-field-width-res-640-value="520" data-field-left-res-960-value="190" data-field-height-res-960-value="26" data-field-width-res-960-value="520"> <a class='tn-atom' href="#rec986067886"> <div class='tn-atom__button-content'> <span class="tn-atom__button-text">7. Создание пользователя</span> </div> <span class="tn-atom__button-border"></span> </a> </div> <div class='t396__elem tn-elem t396__elem-flex tn-elem__9847375211745578353605' data-elem-id='1745578353605' data-elem-type='button' data-field-top-value="307" data-field-left-value="240" data-field-height-value="26" data-field-width-value="520" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-widthmode-value="fixed" data-field-heightmode-value="fixed" data-field-fontsize-value="17" data-field-top-res-360-value="407" data-field-left-res-360-value="20" data-field-height-res-360-value="26" data-field-width-res-360-value="273" data-field-heightmode-res-360-value="fixed" data-field-left-res-480-value="30" data-field-height-res-480-value="26" data-field-width-res-480-value="520" data-field-top-res-640-value="300" data-field-left-res-640-value="110" data-field-height-res-640-value="26" data-field-width-res-640-value="520" data-field-left-res-960-value="190" data-field-height-res-960-value="26" data-field-width-res-960-value="520"> <a class='tn-atom' href="#rec986080961"> <div class='tn-atom__button-content'> <span class="tn-atom__button-text">8. Загрузка файлов</span> </div> <span class="tn-atom__button-border"></span> </a> </div> <div class='t396__elem tn-elem t396__elem-flex tn-elem__9847375211745578353614' data-elem-id='1745578353614' data-elem-type='button' data-field-top-value="337" data-field-left-value="240" data-field-height-value="26" data-field-width-value="520" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-widthmode-value="fixed" data-field-heightmode-value="fixed" data-field-fontsize-value="17" data-field-top-res-360-value="437" data-field-left-res-360-value="20" data-field-height-res-360-value="26" data-field-width-res-360-value="273" data-field-heightmode-res-360-value="fixed" data-field-left-res-480-value="30" data-field-height-res-480-value="26" data-field-width-res-480-value="520" data-field-top-res-640-value="330" data-field-left-res-640-value="110" data-field-height-res-640-value="26" data-field-width-res-640-value="520" data-field-left-res-960-value="190" data-field-height-res-960-value="26" data-field-width-res-960-value="520"> <a class='tn-atom' href="#rec986104146"> <div class='tn-atom__button-content'> <span class="tn-atom__button-text">9. Заключение</span> </div> <span class="tn-atom__button-border"></span> </a> </div> </div> </div> </div> </div> </div> </div> <script>t_onReady(function() {t_onFuncLoad('t396_init',function() {t396_init('984737521');});});</script> <!-- /T396 --> </div> <div id="rec984737526" class="r t-rec t-rec_pt_30 t-rec_pt-res-480_0 t-rec_pb_0" style="padding-top:30px;padding-bottom:0px; " data-animationappear="off" data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><strong>Apache Kafka</strong> — это распределённая платформа обмена сообщениями, созданная для работы с огромными потоками данных в реальном времени. С её помощью компании обмениваются информацией между системами, собирают события, логируют действия пользователей, отслеживают транзакции и строят аналитику в реальном времени. Платформа работает быстро, стабильно и горизонтально масштабируется, что делает её незаменимым инструментом для архитектур типа event-driven.</div> </div> </div> </div> <style> #rec984737526 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec984737526 .t-text{font-size:16px;}}</style> </div> <div id="rec984737531" class="r t-rec" style=" " data-record-type="215"> <a name="sre" style="font-size:0;"></a> </div> <div id="rec984737541" class="r t-rec t-rec_pt_30 t-rec_pb_0" style="padding-top:30px;padding-bottom:0px; " data-animationappear="off" data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h2 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 32px;" data-customstyle="yes">Что такое Kafka и зачем она нужна?</div></h2> </div> </div> </div> <style> #rec984737541 .t050__uptitle{text-transform:uppercase;}#rec984737541 .t050__title{color:#161518;font-weight:700;}@media screen and (min-width:480px){#rec984737541 .t050__title{font-size:28px;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec984737541 .t050__title{font-size:20px;}}</style> </div> <div id="rec984737546" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-animationappear="off" data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md ">Представьте крупный интернет-магазин. Клиенты делают заказы, служба доставки отслеживает статусы, аналитика считает конверсии, отдел маркетинга реагирует на поведение пользователей. Все эти действия генерируют события. Kafka превращает их в поток сообщений, который можно обрабатывать, сохранять, фильтровать и передавать между системами в режиме реального времени. При этом данные не теряются, даже если один из компонентов временно "упал".<br /><br />Kafka — это не просто "очередь сообщений". Это полноценный брокер событий, способный обрабатывать миллионы сообщений в секунду.<br /><br /><strong>Она хорошо подходит для:</strong><br /><br /><ul><li data-list="bullet">потоковой аналитики (stream processing),</li><li data-list="bullet">построения ETL-конвейеров,</li><li data-list="bullet">микросервисных архитектур,</li><li data-list="bullet">журналирования (логгирования),</li><li data-list="bullet">передачи сообщений между приложениями и модулями.</li></ul><br />В современных системах Kafka занимает центральное место как посредник между источниками данных (приложениями, сенсорами, логами) и потребителями (базами, аналитическими платформами, алертингом).</div> </div> </div> </div> <style> #rec984737546 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec984737546 .t-text{font-size:16px;}}</style> </div> <div id="rec984737561" class="r t-rec t-rec_pt_30 t-rec_pb_0" style="padding-top:30px;padding-bottom:0px; " data-animationappear="off" data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title">Как работает Apache Kafka</h3> </div> </div> </div> <style> #rec984737561 .t050__uptitle{text-transform:uppercase;}#rec984737561 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec984737561 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec984737561 .t050__title{font-size:20px;}}</style> </div> <div id="rec984737566" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-animationappear="off" data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md ">Архитектура строится вокруг понятий:<br /><br /><ul><li data-list="bullet"><strong>Брокер Kafka</strong> — сервер, принимающий и раздающий сообщения;</li><li data-list="bullet"><strong>Продюсер (producer)</strong> — источник данных, который отправляет сообщения;</li><li data-list="bullet"><strong>Консьюмер (consumer)</strong> — получатель сообщений;</li><li data-list="bullet"><strong>Топик (topic)</strong> — логическая категория сообщений, по сути, "канал";</li><li data-list="bullet"><strong>Партиция (partition) </strong>— часть топика, физически разделённая для масштабируемости;</li><li data-list="bullet"><strong>ZooKeeper </strong>— сервис координации, необходимый для управления кворумом и брокерами (в версиях до Kafka 3.x).</li></ul>Kafka сохраняет сообщения в партициях на диск, и каждый консьюмер может читать их с любой позиции. Это значит, что один поток можно обрабатывать параллельно несколькими сервисами без риска потерь или дублирования.<br /><br />С момента выпуска в 2011 году платформа стала стандартом для real-time потоковой обработки. Её используют LinkedIn, Netflix, Uber, Яндекс и тысячи других компаний.</div> </div> </div> </div> <style> #rec984737566 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec984737566 .t-text{font-size:16px;}}</style> </div> <div id="rec984737571" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title">Почему стоит изучать Kafka сейчас</h3> </div> </div> </div> <style> #rec984737571 .t050__uptitle{text-transform:uppercase;}#rec984737571 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec984737571 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec984737571 .t050__title{font-size:20px;}}</style> </div> <div id="rec984737576" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md ">Микросервисы, big data, IoT, машинное обучение — все эти направления требуют обмена данными без задержек. Платформа идеально ложится в этот стек. Она способна выдерживать колоссальную нагрузку и при этом сохраняет данные надёжно и предсказуемо.<br /><br />Новичку может показаться, что настроить и запустить это решение сложно. Но это не так — нужно лишь понять базовую логику и правильно развернуть компоненты. Эта статья расскажет, как установить Apache Kafka, как её настроить и с чего начать запуск.<br /><br /><strong>Вы научитесь:</strong><br /><br /><ul><li data-list="bullet">Устанавливать Kafka на Windows, Ubuntu, macOS;</li><li data-list="bullet">Разворачивать Kafka в Docker;</li><li data-list="bullet">Настраивать окружение: <span style="color: rgb(74, 153, 116);">JAVA_HOME, KAFKA_HOME</span>;</li><li data-list="bullet">Работать с ZooKeeper и systemd;</li><li data-list="bullet">Поднимать Kafka-сервер и отправлять первые сообщения;</li><li data-list="bullet">Разбираться, как работает <span style="color: rgb(74, 153, 116);">kafka-server-start.sh</span> и другие команды.</li></ul></div> </div> </div> </div> <style> #rec984737576 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec984737576 .t-text{font-size:16px;}}</style> </div> <div id="rec984737581" class="r t-rec t-rec_pt_30 t-rec_pb_0" style="padding-top:30px;padding-bottom:0px; " data-record-type="171"> <!-- T157 --> <div class="t157"> <div class="t-container"> <div class="t-col t-col_8 t-prefix_2"> <div class="t157__wrapper"> <div class="t-divider" style="background-color:#4a9974;"></div> <div field="text" class="t157__text t-text t-text_sm"><strong>✅ </strong>Кстати, если вы давно хотели разобраться в брокерах сообщений — сейчас самое время. <strong>Kafka уже вошла в стандартную IT-сборку крупных проектов, и умение с ней работать добавит веса в любом резюме.</strong></div> </div> </div> </div> </div> <style> #rec984737581 .t157__text{font-size:18px;}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec984737581 .t157__text{font-size:16px;}}</style> </div> <div id="rec984793851" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md ">Дальше мы разберёмся с системными требованиями, а затем по шагам пройдём через установку на всех популярных платформах, включая Docker. В конце статьи вы получите работающую Kafka-систему, готовую к тестированию и развитию.</div> </div> </div> </div> <style> #rec984793851 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec984793851 .t-text{font-size:16px;}}</style> </div> <div id="rec984737586" class="r t-rec" style=" " data-record-type="215"> <a name="sreduties" style="font-size:0;"></a> </div> <div id="rec984737601" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title">Основные компоненты и файлы</h3> </div> </div> </div> <style> #rec984737601 .t050__uptitle{text-transform:uppercase;}#rec984737601 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec984737601 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec984737601 .t050__title{font-size:20px;}}</style> </div> <div id="rec984737606" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md ">Перед тем как перейти к практике, важно понять структуру и ключевые файлы дистрибутива Apache Kafka. После загрузки вы получите архив, содержащий директории:<br /><br /><ul><li data-list="bullet" style="color: rgb(74, 153, 116);"><span style="color: rgb(74, 153, 116);">/bin </span><span style="color: rgb(51, 51, 51);">— здесь лежат исполняемые скрипты, например</span><span style="color: rgb(74, 153, 116);"> kafka-server-start.sh, kafka-topics.sh, zookeeper-server-start.sh.</span></li><li data-list="bullet" style="color: rgb(74, 153, 116);"><span style="color: rgb(74, 153, 116);">/config </span><span style="color: rgb(51, 51, 51);">— конфигурационные файлы</span><span style="color: rgb(74, 153, 116);"> Kafka и ZooKeeper </span><span style="color: rgb(51, 51, 51);">(</span><span style="color: rgb(74, 153, 116);">server.properties, zookeeper.properties </span><span style="color: rgb(51, 51, 51);">и др.).</span></li><li data-list="bullet" style="color: rgb(74, 153, 116);"><span style="color: rgb(74, 153, 116);">/libs </span><span style="color: rgb(51, 51, 51);">— библиотеки</span><span style="color: rgb(74, 153, 116);"> </span><span style="color: rgb(51, 51, 51);">Java, необходимые для работы сервера.</span></li><li data-list="bullet" style="color: rgb(74, 153, 116);"><span style="color: rgb(74, 153, 116);">/logs </span><span style="color: rgb(51, 51, 51);">— каталог логов.</span></li><li data-list="bullet" style="color: rgb(74, 153, 116);"><span style="color: rgb(74, 153, 116);">/data </span><span style="color: rgb(51, 51, 51);">— в некоторых сборках может быть создана директория хранения сообщений.</span></li></ul></div> </div> </div> </div> <style> #rec984737606 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec984737606 .t-text{font-size:16px;}}</style> </div> <div id="rec984737611" class="r t-rec t-rec_pt_30 t-rec_pb_0" style="padding-top:30px;padding-bottom:0px; " data-record-type="171"> <!-- T157 --> <div class="t157"> <div class="t-container"> <div class="t-col t-col_8 t-prefix_2"> <div class="t157__wrapper"> <div class="t-divider" style="background-color:#4a9974;"></div> <div field="text" class="t157__text t-text t-text_sm"><strong>Это важно: Kafka</strong> — <strong>это Java-приложение</strong>. Значит, перед запуском вам потребуется установленная Java версии 8 и выше (JDK, не JRE). Также желательно настроить переменные среды: <span style="color: rgb(74, 153, 116);">JAVA_HOME</span> и <span style="color: rgb(74, 153, 116);">KAFKA_HOME</span>.</div> </div> </div> </div> </div> <style> #rec984737611 .t157__text{font-size:18px;}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec984737611 .t157__text{font-size:16px;}}</style> </div> <div id="rec984737616" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title">Kafka без ZooKeeper?</h3> </div> </div> </div> <style> #rec984737616 .t050__uptitle{text-transform:uppercase;}#rec984737616 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec984737616 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec984737616 .t050__title{font-size:20px;}}</style> </div> <div id="rec984737621" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md ">В последних версиях системы появился режим KRaft (Kafka Raft), который позволяет запускать <strong>Kafka без ZooKeeper</strong>. Он упрощает архитектуру, снижает количество компонентов и точек отказа. Однако:<br /><br /><ul><li data-list="bullet">Поддержка KRaft по-прежнему развивается.</li><li data-list="bullet">Большинство документации и статей (включая референсы) ориентированы на классическую схему с ZooKeeper.</li></ul><br /><strong>В рамках этой статьи мы рассмотрим оба подхода: с ZooKeeper и в Docker-сценарии — без него.</strong><br /><br /></div> </div> </div> </div> <style> #rec984737621 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec984737621 .t-text{font-size:16px;}}</style> </div> <div id="rec984737631" class="r t-rec" style=" " data-record-type="215"> <a name="differences" style="font-size:0;"></a> </div> <div id="rec984737646" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title">Что понадобится для установки</h3> </div> </div> </div> <style> #rec984737646 .t050__uptitle{text-transform:uppercase;}#rec984737646 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec984737646 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec984737646 .t050__title{font-size:20px;}}</style> </div> <div id="rec984737666" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md ">Чтобы установить Apache Kafka, нужно:<br /><br /><ul><li data-list="bullet">Скачать дистрибутив с официального сайта или через менеджер пакетов;</li><li data-list="bullet">Убедиться в наличии Java (JDK);</li><li data-list="bullet">Подготовить переменные окружения;</li><li data-list="bullet">Настроить конфигурационные файлы;</li><li data-list="bullet">Запустить ZooKeeper (если используется);</li><li data-list="bullet">Запустить Kafka-брокер;</li><li data-list="bullet">Создать топик;</li><li data-list="bullet">Проверить отправку и получение сообщений.</li></ul></div> </div> </div> </div> <style> #rec984737666 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec984737666 .t-text{font-size:16px;}}</style> </div> <div id="rec984737626" class="r t-rec t-rec_pt_30" style="padding-top:30px; " data-animationappear="off" data-record-type="396"> <!-- T396 --> <style>#rec984737626 .t396__artboard {height:370px;background-color:#ffffff;}#rec984737626 .t396__filter {height:370px;}#rec984737626 .t396__carrier{height:370px;background-position:center center;background-attachment:scroll;background-size:cover;background-repeat:no-repeat;}@media screen and (max-width:1199px) {#rec984737626 .t396__artboard,#rec984737626 .t396__filter,#rec984737626 .t396__carrier {}#rec984737626 .t396__filter {}#rec984737626 .t396__carrier {background-attachment:scroll;}}@media screen and (max-width:959px) {#rec984737626 .t396__artboard,#rec984737626 .t396__filter,#rec984737626 .t396__carrier {height:420px;}#rec984737626 .t396__filter {}#rec984737626 .t396__carrier {background-attachment:scroll;}}@media screen and (max-width:639px) {#rec984737626 .t396__artboard,#rec984737626 .t396__filter,#rec984737626 .t396__carrier {height:440px;}#rec984737626 .t396__filter {}#rec984737626 .t396__carrier {background-attachment:scroll;}}@media screen and (max-width:479px) {#rec984737626 .t396__artboard,#rec984737626 .t396__filter,#rec984737626 .t396__carrier {height:330px;}#rec984737626 .t396__filter {}#rec984737626 .t396__carrier {background-attachment:scroll;}}#rec984737626 .tn-elem[data-elem-id="1745214258584"]{z-index:3;top:0px;;left:calc(50% - 600px + 220px);;width:760px;height:370px;}#rec984737626 .tn-elem[data-elem-id="1745214258584"] .tn-atom{border-radius:20px 20px 20px 20px;background-color:#eef3ff;background-position:center center;--t396-borderwidth:2px;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}@media screen and (max-width:1199px){#rec984737626 .tn-elem[data-elem-id="1745214258584"]{left:calc(50% - 480px + 99px);;}}@media screen and (max-width:959px){#rec984737626 .tn-elem[data-elem-id="1745214258584"]{left:calc(50% - 320px + 9px);;width:631px;height:420px;}}@media screen and (max-width:639px){#rec984737626 .tn-elem[data-elem-id="1745214258584"]{width:463px;height:433px;}}@media screen and (max-width:479px){#rec984737626 .tn-elem[data-elem-id="1745214258584"]{width:302px;height:322px;}#rec984737626 .tn-elem[data-elem-id="1745214258584"] .tn-atom{background-size:cover;opacity:1;}}#rec984737626 .tn-elem[data-elem-id="1745214258590"]{z-index:4;top:67px;;left:calc(50% - 600px + 680px);;width:256px;height:auto;}#rec984737626 .tn-elem[data-elem-id="1745214258590"] .tn-atom{border-radius:0px 0px 0px 0px;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}#rec984737626 .tn-elem[data-elem-id="1745214258590"] .tn-atom__img{border-radius:0px 0px 0px 0px;object-position:center center;}@media screen and (max-width:1199px){#rec984737626 .tn-elem[data-elem-id="1745214258590"]{left:calc(50% - 480px + 559px);;height:auto;}}@media screen and (max-width:959px){#rec984737626 .tn-elem[data-elem-id="1745214258590"]{top:173px;;left:calc(50% - 320px + 437px);;width:209px;height:auto;}}@media screen and (max-width:639px){#rec984737626 .tn-elem[data-elem-id="1745214258590"]{top:165px;;left:calc(50% - 240px + 310px);;width:209px;height:auto;}}@media screen and (max-width:479px){#rec984737626 .tn-elem[data-elem-id="1745214258590"]{top:177px;;left:calc(50% - 160px + 200px);;width:122px;height:auto;}}#rec984737626 .tn-elem[data-elem-id="1745214258589"]{color:#170f63;z-index:5;top:168px;;left:calc(50% - 600px + 264px);;width:405px;height:69px;}#rec984737626 .tn-elem[data-elem-id="1745214258589"] .tn-atom{vertical-align:top;color:#170f63;font-size:18px;font-family:'Inter',Arial,sans-serif;line-height:1.3;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec984737626 .tn-elem[data-elem-id="1745214258589"]{left:calc(50% - 480px + 139px);;height:auto;}}@media screen and (max-width:959px){#rec984737626 .tn-elem[data-elem-id="1745214258589"]{top:158px;;left:calc(50% - 320px + 49px);;width:407px;height:auto;}}@media screen and (max-width:639px){#rec984737626 .tn-elem[data-elem-id="1745214258589"]{top:206px;;left:calc(50% - 240px + 53px);;width:317px;height:auto;}}@media screen and (max-width:479px){#rec984737626 .tn-elem[data-elem-id="1745214258589"]{top:150px;;left:calc(50% - 160px + 28px);;width:266px;height:auto;}#rec984737626 .tn-elem[data-elem-id="1745214258589"] .tn-atom{font-size:14px;background-size:cover;}}#rec984737626 .tn-elem[data-elem-id="1745214258587"]{color:#170f63;z-index:6;top:30px;;left:calc(50% - 600px + 260px);;width:561px;height:98px;}#rec984737626 .tn-elem[data-elem-id="1745214258587"] .tn-atom{vertical-align:top;color:#170f63;font-size:38px;font-family:'Inter',Arial,sans-serif;line-height:1.3;font-weight:500;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec984737626 .tn-elem[data-elem-id="1745214258587"]{left:calc(50% - 480px + 139px);;height:auto;}}@media screen and (max-width:959px){#rec984737626 .tn-elem[data-elem-id="1745214258587"]{left:calc(50% - 320px + 49px);;width:456px;height:auto;}}@media screen and (max-width:639px){#rec984737626 .tn-elem[data-elem-id="1745214258587"]{width:355px;height:auto;}}@media screen and (max-width:479px){#rec984737626 .tn-elem[data-elem-id="1745214258587"]{top:27px;;left:calc(50% - 160px + 28px);;width:268px;height:auto;text-align:left;}#rec984737626 .tn-elem[data-elem-id="1745214258587"] .tn-atom{font-size:24px;letter-spacing:0px;background-size:cover;}}#rec984737626 .tn-elem[data-elem-id="1745214258595"]{color:#ffffff;text-align:center;z-index:7;top:277px;;left:calc(50% - 600px + 260px);;width:300px;height:50px;}#rec984737626 .tn-elem[data-elem-id="1745214258595"] .tn-atom{color:#ffffff;font-size:18px;font-family:'Inter',Arial,sans-serif;line-height:1.55;font-weight:400;border-radius:15px 15px 15px 15px;background-position:center center;--t396-speedhover:0.2s;transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-bgcolor-color:#5c76ff;--t396-bgcolor-image:none;background-color:var(--t396-bgcolor-color,transparent);-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;}#rec984737626 .tn-elem[data-elem-id="1745214258595"] .tn-atom::after{display:none;}#rec984737626 .tn-elem[data-elem-id="1745214258595"] .tn-atom .tn-atom__button-text{transition:color var(--t396-speedhover,0s) ease-in-out;color:#ffffff;}#rec984737626 .tn-elem[data-elem-id="1745214258595"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737626 .tn-elem[data-elem-id="1745214258595"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737626 .tn-elem[data-elem-id="1745214258595"] .tn-atom:hover::after{opacity:0;}#rec984737626 .tn-elem[data-elem-id="1745214258595"] .tn-atom:hover{animation-name:none;}}@media screen and (max-width:1199px){#rec984737626 .tn-elem[data-elem-id="1745214258595"]{left:calc(50% - 480px + 139px);;width:px;}#rec984737626 .tn-elem[data-elem-id="1745214258595"] .tn-atom{white-space:normal;background-size:cover;background-color:var(--t396-bgcolor-color,transparent);}#rec984737626 .tn-elem[data-elem-id="1745214258595"] .tn-atom::after{display:none;}#rec984737626 .tn-elem[data-elem-id="1745214258595"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec984737626 .tn-elem[data-elem-id="1745214258595"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737626 .tn-elem[data-elem-id="1745214258595"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737626 .tn-elem[data-elem-id="1745214258595"] .tn-atom:hover::after{opacity:0;}#rec984737626 .tn-elem[data-elem-id="1745214258595"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:959px){#rec984737626 .tn-elem[data-elem-id="1745214258595"]{top:324px;;left:calc(50% - 320px + 49px);;width:px;}#rec984737626 .tn-elem[data-elem-id="1745214258595"] .tn-atom{white-space:normal;background-size:cover;background-color:var(--t396-bgcolor-color,transparent);}#rec984737626 .tn-elem[data-elem-id="1745214258595"] .tn-atom::after{display:none;}#rec984737626 .tn-elem[data-elem-id="1745214258595"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec984737626 .tn-elem[data-elem-id="1745214258595"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737626 .tn-elem[data-elem-id="1745214258595"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737626 .tn-elem[data-elem-id="1745214258595"] .tn-atom:hover::after{opacity:0;}#rec984737626 .tn-elem[data-elem-id="1745214258595"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:639px){#rec984737626 .tn-elem[data-elem-id="1745214258595"]{top:336px;;width:234px;}#rec984737626 .tn-elem[data-elem-id="1745214258595"] .tn-atom{white-space:normal;background-size:cover;background-color:var(--t396-bgcolor-color,transparent);}#rec984737626 .tn-elem[data-elem-id="1745214258595"] .tn-atom::after{display:none;}#rec984737626 .tn-elem[data-elem-id="1745214258595"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec984737626 .tn-elem[data-elem-id="1745214258595"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737626 .tn-elem[data-elem-id="1745214258595"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737626 .tn-elem[data-elem-id="1745214258595"] .tn-atom:hover::after{opacity:0;}#rec984737626 .tn-elem[data-elem-id="1745214258595"] .tn-atom:hover{animation-name:none;}}}@media screen and (max-width:479px){#rec984737626 .tn-elem[data-elem-id="1745214258595"]{top:252px;;left:calc(50% - 160px + 27px);;width:188px;height:45px;}#rec984737626 .tn-elem[data-elem-id="1745214258595"] .tn-atom{white-space:normal;font-size:14px;background-size:cover;-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);transform:rotate(0deg);background-color:var(--t396-bgcolor-color,transparent);}#rec984737626 .tn-elem[data-elem-id="1745214258595"] .tn-atom::after{display:none;}#rec984737626 .tn-elem[data-elem-id="1745214258595"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec984737626 .tn-elem[data-elem-id="1745214258595"] .tn-atom .tn-atom__button-border::before{display:none;}#rec984737626 .tn-elem[data-elem-id="1745214258595"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec984737626 .tn-elem[data-elem-id="1745214258595"] .tn-atom:hover::after{opacity:0;}#rec984737626 .tn-elem[data-elem-id="1745214258595"] .tn-atom:hover{animation-name:none;}}}</style> <div class='t396'> <div class="t396__artboard" data-artboard-recid="984737626" data-artboard-screens="320,480,640,960,1200" data-artboard-height="370" data-artboard-valign="center" data-artboard-upscale="grid" data-artboard-height-res-320="330" data-artboard-upscale-res-320="window" data-artboard-height-res-480="440" data-artboard-height-res-640="420"> <div class="t396__carrier" data-artboard-recid="984737626"></div> <div class="t396__filter" data-artboard-recid="984737626"></div> <div class='t396__elem tn-elem tn-elem__9847376261745214258584' data-elem-id='1745214258584' data-elem-type='shape' data-field-top-value="0" data-field-left-value="220" data-field-height-value="370" data-field-width-value="760" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-widthmode-value="fixed" data-field-heightmode-value="fixed" data-field-height-res-320-value="322" data-field-width-res-320-value="302" data-field-height-res-480-value="433" data-field-width-res-480-value="463" data-field-left-res-640-value="9" data-field-height-res-640-value="420" data-field-width-res-640-value="631" data-field-left-res-960-value="99"> <div class='tn-atom'> </div> </div> <div class='t396__elem tn-elem tn-elem__9847376261745214258590' data-elem-id='1745214258590' data-elem-type='image' data-field-top-value="67" data-field-left-value="680" data-field-height-value="303" data-field-width-value="256" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-filewidth-value="1040" data-field-fileheight-value="1232" data-field-heightmode-value="hug" data-field-top-res-320-value="177" data-field-left-res-320-value="200" data-field-height-res-320-value="144" data-field-width-res-320-value="122" data-field-top-res-480-value="165" data-field-left-res-480-value="310" data-field-height-res-480-value="248" data-field-width-res-480-value="209" data-field-container-res-480-value="grid" data-field-top-res-640-value="173" data-field-left-res-640-value="437" data-field-height-res-640-value="248" data-field-width-res-640-value="209" data-field-left-res-960-value="559" data-field-height-res-960-value="303"> <div class='tn-atom'> <img class='tn-atom__img t-img' data-original='https://static.tildacdn.com/tild3633-3737-4461-b561-373039363636/Frame_1321315329.png'
src='https://thb.tildacdn.com/tild3633-3737-4461-b561-373039363636/-/resize/20x/Frame_1321315329.png'
alt='' imgfield='tn_img_1745214258590'
/> </div> </div> <div class='t396__elem tn-elem tn-elem__9847376261745214258589' data-elem-id='1745214258589' data-elem-type='text' data-field-top-value="168" data-field-left-value="264" data-field-height-value="69" data-field-width-value="405" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="fixedsize" data-field-fontsize-value="18" data-field-top-res-320-value="150" data-field-left-res-320-value="28" data-field-height-res-320-value="72" data-field-width-res-320-value="266" data-field-fontsize-res-320-value="14" data-field-top-res-480-value="206" data-field-left-res-480-value="53" data-field-height-res-480-value="92" data-field-width-res-480-value="317" data-field-top-res-640-value="158" data-field-left-res-640-value="49" data-field-width-res-640-value="407" data-field-left-res-960-value="139"> <div class='tn-atom'field='tn_text_1745214258589'>В нашем боте-помощнике вы найдете полезную информацию по установке и работе с кластером из одного брокера</div> </div> <div class='t396__elem tn-elem tn-elem__9847376261745214258587' data-elem-id='1745214258587' data-elem-type='text' data-field-top-value="30" data-field-left-value="260" data-field-height-value="98" data-field-width-value="561" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="fixedsize" data-field-fontsize-value="38" data-field-top-res-320-value="27" data-field-left-res-320-value="28" data-field-height-res-320-value="93" data-field-width-res-320-value="268" data-field-fontsize-res-320-value="24" data-field-height-res-480-value="147" data-field-width-res-480-value="355" data-field-left-res-640-value="49" data-field-height-res-640-value="98" data-field-width-res-640-value="456" data-field-left-res-960-value="139"> <div class='tn-atom'field='tn_text_1745214258587'>Дарим туториал по основам Apache Kafka</div> </div> <div class='t396__elem tn-elem tn-elem__9847376261745214258595' data-elem-id='1745214258595' data-elem-type='button' data-field-top-value="277" data-field-left-value="260" data-field-height-value="50" data-field-width-value="300" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-widthmode-value="fixed" data-field-heightmode-value="fixed" data-field-fontsize-value="18" data-field-top-res-320-value="252" data-field-left-res-320-value="27" data-field-height-res-320-value="45" data-field-width-res-320-value="188" data-field-container-res-320-value="grid" data-field-heightmode-res-320-value="fixed" data-field-fontsize-res-320-value="14" data-field-top-res-480-value="336" data-field-width-res-480-value="234" data-field-top-res-640-value="324" data-field-left-res-640-value="49" data-field-left-res-960-value="139"> <a class='tn-atom' href="https://t.me/learning_slurm_bot?start=kafkag_ceo_article" target="_blank"> <div class='tn-atom__button-content'> <span class="tn-atom__button-text">Перейти в телеграм-бот</span> </div> <span class="tn-atom__button-border"></span> </a> </div> </div> </div> <script>t_onFuncLoad('t396_initialScale',function() {t396_initialScale('984737626');});t_onReady(function() {t_onFuncLoad('t396_init',function() {t396_init('984737626');});});</script> <!-- /T396 --> </div> <div id="rec1007552406" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md ">В зависимости от операционной системы эти шаги могут немного отличаться. <strong>Далее мы подробно рассмотрим установку на:</strong><br /><br /><ul><li data-list="bullet"><strong>Windows;</strong></li><li data-list="bullet"><strong>Ubuntu;</strong></li><li data-list="bullet"><strong>macOS;</strong></li><li data-list="bullet"><strong>через Docker</strong> — самый простой путь, если нужен локальный стенд без лишней мороки.</li></ul></div> </div> </div> </div> <style> #rec1007552406 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec1007552406 .t-text{font-size:16px;}}</style> </div> <div id="rec984737671" class="r t-rec" style=" " data-record-type="215"> <a name="how" style="font-size:0;"></a> </div> <div id="rec984737696" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title">Что вы получите в итоге</h3> </div> </div> </div> <style> #rec984737696 .t050__uptitle{text-transform:uppercase;}#rec984737696 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec984737696 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec984737696 .t050__title{font-size:20px;}}</style> </div> <div id="rec984737686" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md ">После выполнения инструкции вы:<br /><br /><ul><li data-list="bullet">Развернёте локальный Kafka-брокер;</li><li data-list="bullet">Настроите его под свою ОС;</li><li data-list="bullet">Научитесь создавать топики и передавать сообщения;</li><li data-list="bullet">Поймёте, <strong>как запустить Kafka</strong>, как она обрабатывает потоки и как ей управлять через CLI.</li></ul><br /><strong>Если вы новичок — не переживайте</strong>: шаги даны последовательно, объяснены термины и приведены примеры.<br /><br /></div> </div> </div> </div> <style> #rec984737686 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec984737686 .t-text{font-size:16px;}}</style> </div> <div id="rec984955206" class="r t-rec t-rec_pt_15 t-rec_pb_15" style="padding-top:15px;padding-bottom:15px; " data-record-type="171"> <!-- T157 --> <div class="t157"> <div class="t-container"> <div class="t-col t-col_8 t-prefix_2"> <div class="t157__wrapper"> <div class="t-divider" style="background-color:#4a9974;"></div> <div field="text" class="t157__text t-text t-text_sm"><div style="font-size: 18px;" data-customstyle="yes"><span style="font-family: Inter;">💡 </span><strong style="font-family: Inter;">Совет</strong><span style="font-family: Inter;">: сохраняйте скрипты и команды, которые будете использовать. Это поможет быстрее разворачивать систему в будущем и автоматизировать установку.</span></div></div> </div> </div> </div> </div> </div> <div id="rec984950801" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title">Немного об опыте: Kafka в реальных проектах</h3> </div> </div> </div> <style> #rec984950801 .t050__uptitle{text-transform:uppercase;}#rec984950801 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec984950801 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec984950801 .t050__title{font-size:20px;}}</style> </div> <div id="rec984737701" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><span style="font-family: Inter;">Решение применяется не только в highload-сервисах. </span><strong style="font-family: Inter;">Его используют для</strong><span style="font-family: Inter;">:</span><br /><br /><ul><li data-list="bullet"><span style="font-family: Inter;">систем мониторинга (например, метрики Prometheus через Kafka в ClickHouse),</span></li><li data-list="bullet"><span style="font-family: Inter;">обработки логов (Logstash → Kafka → Elasticsearch),</span></li><li data-list="bullet"><span style="font-family: Inter;">распределённых очередей (например, в микросервисах с Java и Spring Boot),</span></li><li data-list="bullet"><span style="font-family: Inter;">потоковой агрегации данных в финансовых системах.</span></li></ul><strong style="font-family: Inter;">Пример</strong><span style="font-family: Inter;">: один из банков использует Kafka для отслеживания транзакций в реальном времени, реагируя на события быстрее, чем это позволяла старая очередь на RabbitMQ.</span><br /><br /><span style="font-family: Inter;">Такие примеры показывают, что знание этой платформы — не просто теория, а навык, который нужен в боевых условиях.</span><br /><br /><strong style="font-family: Inter;">Хотите стать гуру равномерного распределения нагрузки?</strong><span style="font-family: Inter;"> На курсе </span><a href="https://slurm.io/kafka?utm_source=blog&utm_medium=organic&utm_campaign=article_kafka" target="_blank" rel="noreferrer noopener" style="font-family: Inter;">«Apache Kafka База»</a><span style="font-family: Inter;"> расскажем, как работать с платформой, как настраивать распределенный отказоустойчивый кластер и отслеживать метрики.</span><br /><br /><span style="font-family: Inter;">Готовы приступить к установке? Начнём с самого базового: </span><strong style="font-family: Inter;">что нужно, чтобы система «потянула» эту систему.</strong></div> </div> </div> </div> <style> #rec984737701 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec984737701 .t-text{font-size:16px;}}</style> </div> <div id="rec984737716" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h2 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 32px;" data-customstyle="yes"><span style="font-family: Inter;">Системные требования</span></div></h2> </div> </div> </div> <style> #rec984737716 .t050__uptitle{text-transform:uppercase;}#rec984737716 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec984737716 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec984737716 .t050__title{font-size:20px;}}</style> </div> <div id="rec984737721" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes"><span style="font-family: Inter;">Перед тем как перейти к установке Apache Kafka, важно понять, какие ресурсы необходимы для её стабильной работы. Платформа не требует сверхмощного оборудования, но некоторые требования желательно учитывать — особенно если вы планируете развернуть полноценный кластер или подключать Kafka к продакшн-сервисам.</span></div></div> </div> </div> </div> <style> #rec984737721 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec984737721 .t-text{font-size:16px;}}</style> </div> <div id="rec984979181" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title">Минимальные системные требования</h3> </div> </div> </div> <style> #rec984979181 .t050__uptitle{text-transform:uppercase;}#rec984979181 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec984979181 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec984979181 .t050__title{font-size:20px;}}</style> </div> <div id="rec984737751" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes"><span style="font-family: Inter;">Для тестовой установки или локального стенда достаточно следующей конфигурации:</span><br /><br /><ul><li data-list="bullet"><strong style="font-family: Inter;">Процессор</strong><span style="font-family: Inter;">: 2 ядра (x86_64 или ARM64)</span></li><li data-list="bullet"><strong style="font-family: Inter;">Оперативная память</strong><span style="font-family: Inter;">: от 4 ГБ (рекомендуется 8 ГБ для одновременного запуска ZooKeeper и Kafka)</span></li><li data-list="bullet"><strong style="font-family: Inter;">Диск</strong><span style="font-family: Inter;">: минимум 5 ГБ свободного пространства</span></li><li data-list="bullet"><strong style="font-family: Inter;">Java</strong><span style="font-family: Inter;">: JDK 8, 11 или 17 (Kafka поддерживает Java 8+, но лучше использовать актуальную LTS-версию)</span></li></ul><span style="font-family: Inter;">Для продакшн-сценариев рекомендуются более высокие параметры, особенно по оперативной памяти и скорости дисков (желательно SSD). Система интенсивно использует дисковую подсистему, так как сохраняет все сообщения на диск.</span></div></div> </div> </div> </div> <style> #rec984737751 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec984737751 .t-text{font-size:16px;}}</style> </div> <div id="rec984737756" class="r t-rec" style=" " data-record-type="215"> <a name="result" style="font-size:0;"></a> </div> <div id="rec984737746" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title">Программные зависимости</h3> </div> </div> </div> <style> #rec984737746 .t050__uptitle{text-transform:uppercase;}#rec984737746 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec984737746 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec984737746 .t050__title{font-size:20px;}}</style> </div> <div id="rec984737766" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">Apache Kafka работает на Java и не требует специфической ОС. Вы можете развернуть её на:<br /><br /><ul><li data-list="bullet">Windows (от Windows 10 и выше),</li><li data-list="bullet">Linux (Ubuntu, CentOS, Debian),</li><li data-list="bullet">macOS (от Catalina 10.15).</li></ul><br />Платформа не зависит от конкретной ОС, но в <strong>Linux-среде работать с ней проще и стабильнее</strong>, особенно при автоматизации запуска и настройки.<br /><br />Для запуска потребуется:<br /><br /><ul><li data-list="bullet"><strong>Java JDK</strong> — убедитесь, что установлена полная Java-разработка, а не только JRE.</li><li data-list="bullet"><strong>ZooKeeper </strong>(если используете классическую архитектуру Kafka до версии 3.x);</li><li data-list="bullet"><strong>Переменные окружения</strong>: <span style="color: rgb(74, 153, 116);">JAVA_HOME, KAFKA_HOME</span>;</li><li data-list="bullet"><strong>Bash-совместимый терминал</strong> (особенно актуально для macOS и Linux).</li></ul></div></div> </div> </div> </div> <style> #rec984737766 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec984737766 .t-text{font-size:16px;}}</style> </div> <div id="rec984991061" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title">Программные зависимости</h3> </div> </div> </div> <style> #rec984991061 .t050__uptitle{text-transform:uppercase;}#rec984991061 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec984991061 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec984991061 .t050__title{font-size:20px;}}</style> </div> <div id="rec984992686" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">Apache Kafka работает на Java и не требует специфической ОС. Вы можете развернуть её на:<br /><br /><ul><li data-list="bullet">Windows (от Windows 10 и выше),</li><li data-list="bullet">Linux (Ubuntu, CentOS, Debian),</li><li data-list="bullet">macOS (от Catalina 10.15).</li></ul><br />Платформа не зависит от конкретной ОС, но в Linux-среде работать с ней проще и стабильнее, особенно при автоматизации запуска и настройки.<br /><br /><strong>Для запуска потребуется:</strong><br /><br /><ul><li data-list="bullet">Java JDK — убедитесь, что установлена полная Java-разработка, а не только JRE.</li><li data-list="bullet">ZooKeeper (если используете классическую архитектуру Kafka до версии 3.x);</li><li data-list="bullet">Переменные окружения: <span style="color: rgb(74, 153, 116);">JAVA_HOME, KAFKA_HOME</span>;</li><li data-list="bullet">Bash-совместимый терминал (особенно актуально для macOS и Linux).</li></ul></div></div> </div> </div> </div> <style> #rec984992686 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec984992686 .t-text{font-size:16px;}}</style> </div> <div id="rec985000676" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title">Требования к сети</h3> </div> </div> </div> <style> #rec985000676 .t050__uptitle{text-transform:uppercase;}#rec985000676 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec985000676 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec985000676 .t050__title{font-size:20px;}}</style> </div> <div id="rec985011941" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">Решение активно взаимодействует с внешними сервисами и клиентами. Поэтому убедитесь, что:<br /><br /><ul><li data-list="bullet">Открыты нужные порты:</li><li data-list="bullet"> <span style="color: rgb(74, 153, 116);">2181</span> — для ZooKeeper;</li><li data-list="bullet"> <span style="color: rgb(74, 153, 116);">9092</span> — для Kafka по умолчанию;</li><li data-list="bullet">Не конфликтуют службы с аналогичными портами;</li><li data-list="bullet">Локальный hostname или IP указан корректно в конфигурации (<span style="color: rgb(74, 153, 116);">advertised.listeners</span>), иначе консьюмеры не смогут подключаться.</li></ul></div></div> </div> </div> </div> <style> #rec985011941 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec985011941 .t-text{font-size:16px;}}</style> </div> <div id="rec985082371" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title">Поддержка Docker</h3> </div> </div> </div> <style> #rec985082371 .t050__uptitle{text-transform:uppercase;}#rec985082371 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec985082371 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec985082371 .t050__title{font-size:20px;}}</style> </div> <div id="rec985080946" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes"><span style="font-family: Inter;">Если вы не хотите устанавливать Kafka и ZooKeeper вручную, используйте Docker. Он упрощает запуск, особенно при работе с микросервисами и временными стендами.</span><br /><br /><strong style="font-family: Inter;">Плюсы запуска через Docker:</strong><br /><br /><ul><li data-list="bullet"><span style="font-family: Inter;">Быстрый старт;</span></li><li data-list="bullet"><span style="font-family: Inter;">Не требует настройки окружения;</span></li><li data-list="bullet"><span style="font-family: Inter;">Легко разворачивать несколько брокеров;</span></li><li data-list="bullet"><span style="font-family: Inter;">Можно интегрировать с Docker Compose.</span></li></ul><span style="font-family: Inter;">Мы подробно разберём этот способ в одном из следующих разделов.</span></div></div> </div> </div> </div> <style> #rec985080946 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec985080946 .t-text{font-size:16px;}}</style> </div> <div id="rec985086951" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title">Kafka в облаке</h3> </div> </div> </div> <style> #rec985086951 .t050__uptitle{text-transform:uppercase;}#rec985086951 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec985086951 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec985086951 .t050__title{font-size:20px;}}</style> </div> <div id="rec985081296" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">Платформу можно разворачивать не только локально. Все крупные облачные провайдеры предлагают готовые managed-решения:<br /><br /><ul><li data-list="bullet"><strong>Confluent Cloud — </strong>официальный сервис от разработчиков Kafka<strong>;</strong></li><li data-list="bullet"><strong>AWS MSK (Managed Streaming for Apache Kafka);</strong></li><li data-list="bullet"><strong>Azure Event Hubs (с поддержкой протокола Kafka);</strong></li><li data-list="bullet"><strong>Google Cloud Pub/Sub (совместимость с Kafka-экосистемой).</strong></li></ul>Для обучения и отладки рекомендуется сначала выполнить локальную установку, а уже потом пробовать кластерные и облачные варианты.<br /><br />Теперь, когда мы определились с требованиями, можно переходить к практике. Начнём с самой распространённой ОС <strong>— Windows</strong>.</div></div> </div> </div> </div> <style> #rec985081296 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec985081296 .t-text{font-size:16px;}}</style> </div> <div id="rec985087076" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h2 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 32px;" data-customstyle="yes"><strong>Установка и настройка на Windows</strong></div></h2> </div> </div> </div> <style> #rec985087076 .t050__uptitle{text-transform:uppercase;}#rec985087076 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec985087076 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec985087076 .t050__title{font-size:20px;}}</style> </div> <div id="rec985081106" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">Хотя Apache Kafka изначально создавалась для Linux, развернуть её на Windows тоже возможно. Особенно если вы хотите попробовать брокер сообщений локально, без виртуальных машин и Docker-контейнеров.</div></div> </div> </div> </div> <style> #rec985081106 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec985081106 .t-text{font-size:16px;}}</style> </div> <div id="rec985092501" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 28px;" data-customstyle="yes"><strong>Шаг 1: Установка Java (JDK)</strong></div></h3> </div> </div> </div> <style> #rec985092501 .t050__uptitle{text-transform:uppercase;}#rec985092501 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec985092501 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec985092501 .t050__title{font-size:20px;}}</style> </div> <div id="rec985081481" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">Kafka работает на Java, поэтому первым делом нужно установить JDK.<br /><br /><ol><li data-list="ordered">Скачайте последнюю LTS-версию JDK с сайта <a href="https://adoptium.net/">https://adoptium.net</a> или <a href="https://jdk.java.net/">https://jdk.java.net</a>.</li><li data-list="ordered">Установите JDK и пропишите переменную окружения <span style="color: rgb(74, 153, 116);">JAVA_HOME</span>:</li></ol><ul><li data-list="bullet">Откройте <strong>Свойства системы</strong> <strong>→ Переменные среды.</strong></li><li data-list="bullet">Добавьте <span style="color: rgb(74, 153, 116);">JAVA_HOME</span> со значением пути к установленному JDK (например, <span style="color: rgb(74, 153, 116);">C:\Program Files\Java\jdk-17</span>).</li><li data-list="bullet">В переменную Path добавьте <span style="color: rgb(74, 153, 116);">%JAVA_HOME%\bin</span>.</li></ul><strong>Проверьте в терминале:</strong></div></div> </div> </div> </div> <style> #rec985081481 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec985081481 .t-text{font-size:16px;}}</style> </div> <div id="rec985170261" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <div id="rec985168761" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "> <div style="font-size: 18px;" data-customstyle="yes"> <div style="color: rgb(74, 153, 116);"> <noindex>java - version</noindex> </div> </div> </div> </div> </div> </div> <style>
#rec985168761
.t-text
{
font-size:18px;font-family:'Inter';
}
@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px)
{
#rec985168761 .t-text{font-size:16px;}
}
</style> </div> <!-- nominify end --> </div> </div> </div> </div> <div id="rec985168761" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">Если выводится версия JDK — всё готово.</div></div> </div> </div> </div> <style> #rec985168761 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec985168761 .t-text{font-size:16px;}}</style> </div> <div id="rec985113491" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 28px;" data-customstyle="yes"><strong>Шаг 2: Скачивание и распаковка</strong></div></h3> </div> </div> </div> <style> #rec985113491 .t050__uptitle{text-transform:uppercase;}#rec985113491 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec985113491 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec985113491 .t050__title{font-size:20px;}}</style> </div> <div id="rec985081761" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes"><ol><li data-list="ordered">Перейдите на <a href="https://kafka.apache.org/downloads" target="_blank" rel="noreferrer noopener">«официальный сайт Kafka»</a>.</li><li data-list="ordered">Скачайте архив <strong>Binary downloads</strong> с поддержкой Scala (обычно <span style="color: rgb(74, 153, 116);">kafka_2.13-x.x.x.tgz</span>).</li><li data-list="ordered">Распакуйте архив в любую директорию, например: <span style="color: rgb(74, 153, 116);">C:\kafka</span>.</li></ol><strong>⚠️ Название папки не должно содержать пробелов или русских букв.</strong></div></div> </div> </div> </div> <style> #rec985081761 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec985081761 .t-text{font-size:16px;}}</style> </div> <div id="rec985116251" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 28px;" data-customstyle="yes"><strong>Шаг 3: Настройка переменных окружения (по желанию)</strong></div></h3> </div> </div> </div> <style> #rec985116251 .t050__uptitle{text-transform:uppercase;}#rec985116251 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec985116251 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec985116251 .t050__title{font-size:20px;}}</style> </div> <div id="rec985082031" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">Чтобы удобно запускать систему из любого места, пропишите переменную <span style="color: rgb(74, 153, 116);">KAFKA_HOME</span>:<br /><br /><ol><li data-list="ordered">Добавьте <span style="color: rgb(74, 153, 116);">KAFKA_HOME = C:\kafka</span></li><li data-list="ordered">В <span style="color: rgb(74, 153, 116);">Path</span> добавьте:</li></ol></div></div> </div> </div> </div> <style> #rec985082031 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec985082031 .t-text{font-size:16px;}}</style> </div> <div id="rec985493631" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <div id="rec985168761" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "> <div style="font-size: 18px;" data-customstyle="yes"> <div style="color: rgb(74, 153, 116);"> <noindex>%KAFKA_HOME%\bin\windows</noindex> </div> </div> </div> </div> </div> </div> <style>
#rec985168761
.t-text
{
font-size:18px;font-family:'Inter';
}
@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px)
{
#rec985168761 .t-text{font-size:16px;}
}
</style> </div> <!-- nominify end --> </div> </div> </div> </div> <div id="rec985121231" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 28px;" data-customstyle="yes"><strong>Шаг 4: Запуск ZooKeeper и Kafka</strong></div></h3> </div> </div> </div> <style> #rec985121231 .t050__uptitle{text-transform:uppercase;}#rec985121231 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec985121231 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec985121231 .t050__title{font-size:20px;}}</style> </div> <div id="rec985082111" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">В классической схеме Kafka зависит от ZooKeeper, поэтому сначала запускается он. Перейдите в папку <span style="color: rgb(74, 153, 116);">bin/windows</span> и запустите ZooKeeper:</div></div> </div> </div> </div> <style> #rec985082111 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec985082111 .t-text{font-size:16px;}}</style> </div> <div id="rec985495686" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <div id="rec985168761" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "> <div style="font-size: 18px;" data-customstyle="yes"> <div style="color: rgb(74, 153, 116);"> <noindex>zookeeper-server-start.bat ..\..\config\zookeeper.properties
</noindex> </div> </div> </div> </div> </div> </div> <style>
#rec985168761
.t-text
{
font-size:18px;font-family:'Inter';
}
@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px)
{
#rec985168761 .t-text{font-size:16px;}
}
</style> </div> <!-- nominify end --> </div> </div> </div> </div> <div id="rec985501291" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">Откройте новое окно терминала и запустите <span style="color: rgb(74, 153, 116);">Kafka</span>:</div></div> </div> </div> </div> <style> #rec985501291 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec985501291 .t-text{font-size:16px;}}</style> </div> <div id="rec985497271" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <div id="rec985168761" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "> <div style="font-size: 18px;" data-customstyle="yes"> <div style="color: rgb(74, 153, 116);"> <noindex>kafka-server-start.bat ..\..\config\server.properties</noindex> </div> </div> </div> </div> </div> </div> <style>
#rec985168761
.t-text
{
font-size:18px;font-family:'Inter';
}
@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px)
{
#rec985168761 .t-text{font-size:16px;}
}
</style> </div> <!-- nominify end --> </div> </div> </div> </div> <div id="rec985502221" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">Если всё прошло успешно, в терминале появится сообщение <span style="color: rgb(74, 153, 116);">Kafka started</span>.</div></div> </div> </div> </div> <style> #rec985502221 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec985502221 .t-text{font-size:16px;}}</style> </div> <div id="rec985129801" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 28px;" data-customstyle="yes"><strong>Шаг 5: Создание топика</strong></div></h3> </div> </div> </div> <style> #rec985129801 .t050__uptitle{text-transform:uppercase;}#rec985129801 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec985129801 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec985129801 .t050__title{font-size:20px;}}</style> </div> <div id="rec985081936" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">После запуска можно создать топик — логическую категорию сообщений:</div></div> </div> </div> </div> <style> #rec985081936 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec985081936 .t-text{font-size:16px;}}</style> </div> <div id="rec985526671" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <div id="rec985168761" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "> <div style="font-size: 18px;" data-customstyle="yes"> <div style="color: rgb(74, 153, 116);"> <noindex>kafka-topics.bat --create --topic test --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1
</noindex> </div> </div> </div> </div> </div> </div> <style>
#rec985168761
.t-text
{
font-size:18px;font-family:'Inter';
}
@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px)
{
#rec985168761 .t-text{font-size:16px;}
}
</style> </div> <!-- nominify end --> </div> </div> </div> </div> <div id="rec985529301" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">Проверьте, что топик создан:</div></div> </div> </div> </div> <style> #rec985529301 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec985529301 .t-text{font-size:16px;}}</style> </div> <div id="rec985528536" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <div id="rec985168761" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "> <div style="font-size: 18px;" data-customstyle="yes"> <div style="color: rgb(74, 153, 116);"> <noindex>kafka-topics.bat --list --bootstrap-server localhost:9092
</noindex> </div> </div> </div> </div> </div> </div> <style>
#rec985168761
.t-text
{
font-size:18px;font-family:'Inter';
}
@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px)
{
#rec985168761 .t-text{font-size:16px;}
}
</style> </div> <!-- nominify end --> </div> </div> </div> </div> <div id="rec985131876" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 28px;" data-customstyle="yes"><strong>Шаг 6: Отправка и получение сообщений</strong></div></h3> </div> </div> </div> <style> #rec985131876 .t050__uptitle{text-transform:uppercase;}#rec985131876 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec985131876 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec985131876 .t050__title{font-size:20px;}}</style> </div> <div id="rec985081586" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes"><strong>Запуск продюсера:</strong></div></div> </div> </div> </div> <style> #rec985081586 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec985081586 .t-text{font-size:16px;}}</style> </div> <div id="rec985532111" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <div id="rec985168761" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "> <div style="font-size: 18px;" data-customstyle="yes"> <div style="color: rgb(74, 153, 116);"> <noindex>kafka-console-producer.bat --broker-list localhost:9092 --topic test
</noindex> </div> </div> </div> </div> </div> </div> <style>
#rec985168761
.t-text
{
font-size:18px;font-family:'Inter';
}
@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px)
{
#rec985168761 .t-text{font-size:16px;}
}
</style> </div> <!-- nominify end --> </div> </div> </div> </div> <div id="rec985534626" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">Введите сообщение и нажмите <span style="color: rgb(74, 153, 116);">Enter</span>.<br /><br /><strong>Запуск консьюмера:</strong></div></div> </div> </div> </div> <style> #rec985534626 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec985534626 .t-text{font-size:16px;}}</style> </div> <div id="rec985533581" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <div id="rec985168761" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "> <div style="font-size: 18px;" data-customstyle="yes"> <div style="color: rgb(74, 153, 116);"> <noindex>kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning
</noindex> </div> </div> </div> </div> </div> </div> <style>
#rec985168761
.t-text
{
font-size:18px;font-family:'Inter';
}
@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px)
{
#rec985168761 .t-text{font-size:16px;}
}
</style> </div> <!-- nominify end --> </div> </div> </div> </div> <div id="rec985535306" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md ">Вы увидите отправленные сообщения.</div> </div> </div> </div> <style> #rec985535306 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec985535306 .t-text{font-size:16px;}}</style> </div> <div id="rec985135386" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 28px;" data-customstyle="yes">Возможные ошибки и решения</div></h3> </div> </div> </div> <style> #rec985135386 .t050__uptitle{text-transform:uppercase;}#rec985135386 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec985135386 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec985135386 .t050__title{font-size:20px;}}</style> </div> <div id="rec985135501" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes"><ul><li data-list="bullet" style="color: rgb(74, 153, 116);"><span style="color: rgb(74, 153, 116);">Missing JAVA_HOME</span> — убедитесь, что переменная окружения прописана.</li><li data-list="bullet"><strong>Порты 2181 или 9092 заняты</strong> — остановите другие процессы.</li><li data-list="bullet"><strong>Kafka не запускается</strong> — проверьте версию Java и корректность путей.</li></ul></div></div> </div> </div> </div> <style> #rec985135501 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec985135501 .t-text{font-size:16px;}}</style> </div> <div id="rec985539216" class="r t-rec t-rec_pt_0 t-rec_pb_15" style="padding-top:0px;padding-bottom:15px; " data-record-type="171"> <!-- T157 --> <div class="t157"> <div class="t-container"> <div class="t-col t-col_8 t-prefix_2"> <div class="t157__wrapper"> <div class="t-divider" style="background-color:#4a9974;"></div> <div field="text" class="t157__text t-text t-text_sm"><strong>🛠️ Совет: </strong>создайте <span style="font-family: Inter; font-size: 18px; color: rgb(74, 153, 116);">.bat</span>-файлы с командами запуска, чтобы не вводить их вручную.</div> </div> </div> </div> </div> </div> <div id="rec985541911" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">Теперь вы знаете, <strong>как установить Apache Kafka на Windows</strong> и выполнить базовую настройку. Переходим к Ubuntu.</div></div> </div> </div> </div> <style> #rec985541911 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec985541911 .t-text{font-size:16px;}}</style> </div> <div id="rec985144631" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h2 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 32px;" data-customstyle="yes">Установка и настройка на Ubuntu</div></h2> </div> </div> </div> <style> #rec985144631 .t050__uptitle{text-transform:uppercase;}#rec985144631 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec985144631 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec985144631 .t050__title{font-size:20px;}}</style> </div> <div id="rec985463411" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">Установка Kafka на Ubuntu — один из самых стабильных и удобных способов для локальной разработки. Здесь меньше ограничений, чем в Windows, а управление сервисами можно полностью автоматизировать через systemd.</div></div> </div> </div> </div> <style> #rec985463411 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec985463411 .t-text{font-size:16px;}}</style> </div> <div id="rec985144811" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 28px;" data-customstyle="yes">Шаг 1: Обновление системы и установка Java</div></h3> </div> </div> </div> <style> #rec985144811 .t050__uptitle{text-transform:uppercase;}#rec985144811 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec985144811 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec985144811 .t050__title{font-size:20px;}}</style> </div> <div id="rec986036966" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">Платформа требует установленной Java (JDK). Установим OpenJDK 11, подходящую для Kafka 2.x и 3.x.<br /><br /><span style="color: rgb(74, 153, 116);">sudo apt update && sudo apt upgrade -y</span><br /><span style="color: rgb(74, 153, 116);">sudo apt install openjdk-11-jdk -y</span><br /><br />Проверьте установку:<br /><br /><span style="color: rgb(74, 153, 116);">java -version</span></div></div> </div> </div> </div> <style> #rec986036966 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986036966 .t-text{font-size:16px;}}</style> </div> <div id="rec985144941" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 28px;" data-customstyle="yes">Шаг 2: Загрузка</div></h3> </div> </div> </div> <style> #rec985144941 .t050__uptitle{text-transform:uppercase;}#rec985144941 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec985144941 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec985144941 .t050__title{font-size:20px;}}</style> </div> <div id="rec986038901" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">Перейдите на официальный сайт <a href="https://kafka.apache.org/downloads" target="_blank" rel="noreferrer noopener">«kafka.apache.org/downloads»</a> и скопируйте ссылку на нужную версию. Затем скачайте архив через wget:<br /><br /><span style="color: rgb(74, 153, 116);">wget https://downloads.apache.org/kafka/3.6.0/kafka_2.13-3.6.0.tgz</span><br /><br />Распакуйте архив:<br /><br /><span style="color: rgb(74, 153, 116);">tar -xvzf kafka_2.13-3.6.0.tgz</span><br /><span style="color: rgb(74, 153, 116);">mv kafka_2.13-3.6.0 /opt/kafka</span></div></div> </div> </div> </div> <style> #rec986038901 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986038901 .t-text{font-size:16px;}}</style> </div> <div id="rec985144981" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 28px;" data-customstyle="yes">Шаг 3: Проверка переменной окружения JAVA_HOME</div></h3> </div> </div> </div> <style> #rec985144981 .t050__uptitle{text-transform:uppercase;}#rec985144981 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec985144981 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec985144981 .t050__title{font-size:20px;}}</style> </div> <div id="rec986039936" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">Убедитесь, что <span style="color: rgb(74, 153, 116);">JAVA_HOME</span> прописана. Добавьте её в <span style="color: rgb(74, 153, 116);">.bashrc</span>:<br /><br /><span style="color: rgb(74, 153, 116);">echo "export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which javac))))" >> ~/.bashrc</span><br /><span style="color: rgb(74, 153, 116);">echo "export PATH=\$PATH:\$JAVA_HOME/bin" >> ~/.bashrc</span><br /><span style="color: rgb(74, 153, 116);">source ~/.bashrc</span></div></div> </div> </div> </div> <style> #rec986039936 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986039936 .t-text{font-size:16px;}}</style> </div> <div id="rec985144891" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 28px;" data-customstyle="yes">Шаг 4: Запуск ZooKeeper и Kafka вручную</div></h3> </div> </div> </div> <style> #rec985144891 .t050__uptitle{text-transform:uppercase;}#rec985144891 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec985144891 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec985144891 .t050__title{font-size:20px;}}</style> </div> <div id="rec986041496" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">Помним, что ZooKeeper запускается первым:<br /><br /><span style="color: rgb(74, 153, 116);">/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties</span><br /><br />Откройте новый терминал и запустите Kafka-брокер:<br /><br /><span style="color: rgb(74, 153, 116);">/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties</span></div></div> </div> </div> </div> <style> #rec986041496 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986041496 .t-text{font-size:16px;}}</style> </div> <div id="rec985144791" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 28px;" data-customstyle="yes">Шаг 5: Создание топика</div></h3> </div> </div> </div> <style> #rec985144791 .t050__uptitle{text-transform:uppercase;}#rec985144791 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec985144791 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec985144791 .t050__title{font-size:20px;}}</style> </div> <div id="rec986042146" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes"><span style="color: rgb(74, 153, 116);">/opt/kafka/bin/kafka-topics.sh --create --topic test --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1</span><br /><br />Проверьте:<br /><br /><span style="color: rgb(74, 153, 116);">/opt/kafka/bin/kafka-topics.sh --list --bootstrap-server localhost:9092</span></div></div> </div> </div> </div> <style> #rec986042146 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986042146 .t-text{font-size:16px;}}</style> </div> <div id="rec985144226" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 28px;" data-customstyle="yes">Шаг 6: Отправка и получение сообщений</div></h3> </div> </div> </div> <style> #rec985144226 .t050__uptitle{text-transform:uppercase;}#rec985144226 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec985144226 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec985144226 .t050__title{font-size:20px;}}</style> </div> <div id="rec986042841" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes"><strong>Продюсер:</strong><br /><br /><span style="color: rgb(74, 153, 116);">/opt/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test</span><br /><br /><strong>Консьюмер:</strong><br /><br /><span style="color: rgb(74, 153, 116);">/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning</span></div></div> </div> </div> </div> <style> #rec986042841 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986042841 .t-text{font-size:16px;}}</style> </div> <div id="rec985144181" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 28px;" data-customstyle="yes">Шаг 7 (опционально): Автозапуск через systemd</div></h3> </div> </div> </div> <style> #rec985144181 .t050__uptitle{text-transform:uppercase;}#rec985144181 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec985144181 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec985144181 .t050__title{font-size:20px;}}</style> </div> <div id="rec986044836" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">Создайте юнит-файлы:<br /><br /><span style="color: rgb(74, 153, 116);">sudo nano /etc/systemd/system/zookeeper.service</span><br /><br />Вставьте:<br /><br /><span style="color: rgb(74, 153, 116);">[Unit]</span><br /><span style="color: rgb(74, 153, 116);">Description=Apache ZooKeeper</span><br /><span style="color: rgb(74, 153, 116);">After=network.target</span><br /><br /><span style="color: rgb(74, 153, 116);">[Service]</span><br /><br /><span style="color: rgb(74, 153, 116);">Type=simple</span><br /><span style="color: rgb(74, 153, 116);">ExecStart=/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties</span><br /><span style="color: rgb(74, 153, 116);">ExecStop=/opt/kafka/bin/zookeeper-server-stop.sh</span><br /><span style="color: rgb(74, 153, 116);">Restart=on-abnormal</span><br /><br />[Install]<br /><br />WantedBy=multi-user.target<br /><br />Аналогично создайте kafka.service:<br /><br /><span style="color: rgb(74, 153, 116);">sudo nano /etc/systemd/system/kafka.service</span><br /><br /><span style="color: rgb(74, 153, 116);">[Unit]</span><br /><span style="color: rgb(74, 153, 116);">Description=Apache Kafka</span><br /><span style="color: rgb(74, 153, 116);">After=zookeeper.service</span><br /><br /><span style="color: rgb(74, 153, 116);">[Service]</span><br /><span style="color: rgb(74, 153, 116);">Type=simple</span><br /><span style="color: rgb(74, 153, 116);">ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties</span><br /><span style="color: rgb(74, 153, 116);">ExecStop=/opt/kafka/bin/kafka-server-stop.sh</span><br /><span style="color: rgb(74, 153, 116);">Restart=on-abnormal</span><br /><br /><span style="color: rgb(74, 153, 116);">[Install]</span><br /><span style="color: rgb(74, 153, 116);">WantedBy=multi-user.target</span><br /><br />Активируйте сервисы:<br /><br /><span style="color: rgb(74, 153, 116);">sudo systemctl daemon-reexec</span><br /><span style="color: rgb(74, 153, 116);">sudo systemctl enable zookeeper kafka</span><br /><span style="color: rgb(74, 153, 116);">sudo systemctl start zookeeper</span><br /><span style="color: rgb(74, 153, 116);">sudo systemctl start kafka</span><br /><br />Всё готово к работе. Теперь вы знаете, <strong>как поднять Kafka на Ubuntu </strong>вручную или через systemd. Далее — установка на macOS.</div></div> </div> </div> </div> <style> #rec986044836 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986044836 .t-text{font-size:16px;}}</style> </div> <div id="rec984737691" class="r t-rec t-rec_pt_30 t-rec_pb_0" style="padding-top:30px;padding-bottom:0px; " data-record-type="3"> <!-- T107 --> <div class="t107"> <div class="t-align_center" itemscope itemtype="http://schema.org/ImageObject"> <meta itemprop="image" content="https://static.tildacdn.com/tild3464-3766-4230-b265-356335303238/kafka_2.jpg"> <img class="t-img t-width t107__width t-width_8"
src="https://thb.tildacdn.com/tild3464-3766-4230-b265-356335303238/-/empty/kafka_2.jpg" data-original="https://static.tildacdn.com/tild3464-3766-4230-b265-356335303238/kafka_2.jpg"
imgfield="img"
alt=""> </div> </div> <style> #rec984737691 .t107 .t-img{border-radius:15px;}@media (max-width:480px){#rec984737691 .t107 .t-img{border-radius:0px;}}</style> </div> <div id="rec986044201" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h2 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 32px;" data-customstyle="yes"><strong>Установка и настройка на macOS</strong></div></h2> </div> </div> </div> <style> #rec986044201 .t050__uptitle{text-transform:uppercase;}#rec986044201 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec986044201 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986044201 .t050__title{font-size:20px;}}</style> </div> <div id="rec986051641" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">Установка Apache Kafka на macOS проще всего через Homebrew. Это быстро, удобно и хорошо подходит для локальной разработки. Ниже — пошаговая инструкция для запуска Kafka с ZooKeeper на macOS.</div></div> </div> </div> </div> <style> #rec986051641 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986051641 .t-text{font-size:16px;}}</style> </div> <div id="rec986044471" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 28px;" data-customstyle="yes">Шаг 1: Установка Homebrew (если не установлен)</div></h3> </div> </div> </div> <style> #rec986044471 .t050__uptitle{text-transform:uppercase;}#rec986044471 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec986044471 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986044471 .t050__title{font-size:20px;}}</style> </div> <div id="rec986054201" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">Откройте терминал и выполните:<br /><br /><span style="color: rgb(74, 153, 116);">/bin/bash -c "$(curl -fsSL </span><br /><span style="color: rgb(74, 153, 116);">https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"</span><br /><br />Проверьте установку:<br /><br /><span style="color: rgb(74, 153, 116);">brew --version</span></div></div> </div> </div> </div> <style> #rec986054201 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986054201 .t-text{font-size:16px;}}</style> </div> <div id="rec986044566" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 28px;" data-customstyle="yes">Шаг 2: Установка Kafka и ZooKeeper</div></h3> </div> </div> </div> <style> #rec986044566 .t050__uptitle{text-transform:uppercase;}#rec986044566 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec986044566 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986044566 .t050__title{font-size:20px;}}</style> </div> <div id="rec986054916" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">Установим Kafka вместе с зависимостями:<br /><br /><span style="color: rgb(74, 153, 116);">brew install kafka</span><br /><br />Homebrew установит Kafka и ZooKeeper в стандартные директории и автоматически добавит бинарные файлы в PATH.</div></div> </div> </div> </div> <style> #rec986054916 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986054916 .t-text{font-size:16px;}}</style> </div> <div id="rec986044661" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 28px;" data-customstyle="yes">Шаг 3: Запуск ZooKeeper</div></h3> </div> </div> </div> <style> #rec986044661 .t050__uptitle{text-transform:uppercase;}#rec986044661 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec986044661 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986044661 .t050__title{font-size:20px;}}</style> </div> <div id="rec986055521" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">Вам всё ещё требуется ZooKeeper, если вы не используете режим KRaft. Запустите его через brew:<br /><br /><span style="color: rgb(74, 153, 116);">brew services start zookeeper</span><br /><br />Проверьте статус:<br /><br /><span style="color: rgb(74, 153, 116);">brew services list</span></div></div> </div> </div> </div> <style> #rec986055521 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986055521 .t-text{font-size:16px;}}</style> </div> <div id="rec986044696" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 28px;" data-customstyle="yes">Шаг 4: Запуск Kafka</div></h3> </div> </div> </div> <style> #rec986044696 .t050__uptitle{text-transform:uppercase;}#rec986044696 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec986044696 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986044696 .t050__title{font-size:20px;}}</style> </div> <div id="rec986056311" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">После запуска ZooKeeper включаем нашу платформу:<br /><br /><span style="color: rgb(74, 153, 116);">brew services start kafka</span><br /><br />Вы также можете выполнить ручной запуск:<br /><br /><span style="color: rgb(74, 153, 116);">kafka-server-start /opt/homebrew/etc/kafka/server.properties</span></div></div> </div> </div> </div> <style> #rec986056311 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986056311 .t-text{font-size:16px;}}</style> </div> <div id="rec986044736" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 28px;" data-customstyle="yes">Шаг 5: Создание топика</div></h3> </div> </div> </div> <style> #rec986044736 .t050__uptitle{text-transform:uppercase;}#rec986044736 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec986044736 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986044736 .t050__title{font-size:20px;}}</style> </div> <div id="rec986057421" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes"><span style="color: rgb(74, 153, 116);">kafka-topics --create --topic test --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1</span><br /><br />Проверим наличие:<br /><br /><span style="color: rgb(74, 153, 116);">kafka-topics --list --bootstrap-server localhost:9092</span></div></div> </div> </div> </div> <style> #rec986057421 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986057421 .t-text{font-size:16px;}}</style> </div> <div id="rec986044706" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 28px;" data-customstyle="yes">Шаг 6: Тестовый обмен сообщениями</div></h3> </div> </div> </div> <style> #rec986044706 .t050__uptitle{text-transform:uppercase;}#rec986044706 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec986044706 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986044706 .t050__title{font-size:20px;}}</style> </div> <div id="rec986060116" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes"><strong>Продюсер:</strong><br /><br /><span style="color: rgb(74, 153, 116);">kafka-console-producer --broker-list localhost:9092 --topic test</span><br /><br /><strong>Консьюмер:</strong><br /><br /><span style="color: rgb(74, 153, 116);">kafka-console-consumer --bootstrap-server localhost:9092 --topic test --from-beginning</span></div></div> </div> </div> </div> <style> #rec986060116 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986060116 .t-text{font-size:16px;}}</style> </div> <div id="rec986044681" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 28px;" data-customstyle="yes"><strong>Шаг 7: Управление сервисами</strong></div></h3> </div> </div> </div> <style> #rec986044681 .t050__uptitle{text-transform:uppercase;}#rec986044681 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec986044681 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986044681 .t050__title{font-size:20px;}}</style> </div> <div id="rec986062326" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">Остановить Kafka и ZooKeeper можно командой:<br /><br /><span style="color: rgb(74, 153, 116);">brew services stop kafka</span><br /><span style="color: rgb(74, 153, 116);">brew services stop zookeeper</span><br /><br />Если вы хотите отключить автозапуск:<br /><br /><span style="color: rgb(74, 153, 116);">brew services remove kafka</span><br /><span style="color: rgb(74, 153, 116);">brew services remove zookeeper</span></div></div> </div> </div> </div> <style> #rec986062326 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986062326 .t-text{font-size:16px;}}</style> </div> <div id="rec986044631" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 28px;" data-customstyle="yes">Примечания</div></h3> </div> </div> </div> <style> #rec986044631 .t050__uptitle{text-transform:uppercase;}#rec986044631 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec986044631 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986044631 .t050__title{font-size:20px;}}</style> </div> <div id="rec986062971" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes"><ul><li data-list="bullet">Решение работает на Java, убедитесь, что у вас установлен JDK 11 или выше. Если нет — установите через brew:</li></ul><span style="color: rgb(74, 153, 116);">brew install openjdk@11</span><br /><br /><ul><li data-list="bullet">Убедитесь, что в PATH добавлены Kafka-утилиты. Обычно Homebrew делает это автоматически, но можно добавить вручную:</li></ul><span style="color: rgb(74, 153, 116);">export PATH="/opt/homebrew/bin:$PATH"</span><br /><br /></div></div> </div> </div> </div> <style> #rec986062971 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986062971 .t-text{font-size:16px;}}</style> </div> <div id="rec986065511" class="r t-rec t-rec_pt_0 t-rec_pb_0" style="padding-top:0px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">Kafka успешно развернута на macOS. Это одна из самых простых платформ для локального тестирования брокеров сообщений. Далее — установка через Docker.</div></div> </div> </div> </div> <style> #rec986065511 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986065511 .t-text{font-size:16px;}}</style> </div> <div id="rec986044446" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h2 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 32px;" data-customstyle="yes"><strong>Установка и настройка в Docker</strong></div></h2> </div> </div> </div> <style> #rec986044446 .t050__uptitle{text-transform:uppercase;}#rec986044446 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec986044446 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986044446 .t050__title{font-size:20px;}}</style> </div> <div id="rec986067111" class="r t-rec t-rec_pt_0 t-rec_pb_0" style="padding-top:0px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">Если не хочется возиться с установкой Java, конфигурацией ZooKeeper и путями, проще всего развернуть Kafka в Docker. Этот способ подойдёт как для локального тестирования, так и для развёртывания на сервере без сложной подготовки среды.</div></div> </div> </div> </div> <style> #rec986067111 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986067111 .t-text{font-size:16px;}}</style> </div> <div id="rec986067571" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 28px;" data-customstyle="yes">Шаг 1: Установка Docker</div></h3> </div> </div> </div> <style> #rec986067571 .t050__uptitle{text-transform:uppercase;}#rec986067571 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec986067571 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986067571 .t050__title{font-size:20px;}}</style> </div> <div id="rec986068156" class="r t-rec t-rec_pt_0 t-rec_pb_0" style="padding-top:0px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">Если Docker ещё не установлен, скачайте его с <strong><a href="https://www.docker.com/products/docker-desktop" target="_blank" rel="noreferrer noopener">«официального сайта»</a></strong> и установите в системе.<br /><br />Проверьте установку:<br /><br /><span style="color: rgb(74, 153, 116);">docker --version</span></div></div> </div> </div> </div> <style> #rec986068156 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986068156 .t-text{font-size:16px;}}</style> </div> <div id="rec986067836" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 28px;" data-customstyle="yes">Шаг 2: Запуск Kafka и ZooKeeper в Docker через команду</div></h3> </div> </div> </div> <style> #rec986067836 .t050__uptitle{text-transform:uppercase;}#rec986067836 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec986067836 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986067836 .t050__title{font-size:20px;}}</style> </div> <div id="rec986069321" class="r t-rec t-rec_pt_0 t-rec_pb_0" style="padding-top:0px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">Требуется ZooKeeper. Самый быстрый способ — поднять оба сервиса через одну команду:<br /><br /><span style="color: rgb(74, 153, 116);">docker run -d --name zookeeper \</span><br /><span style="color: rgb(74, 153, 116);">-e ALLOW_ANONYMOUS_LOGIN=yes \</span><br /><span style="color: rgb(74, 153, 116);">-p 2181:2181 \</span><br /><span style="color: rgb(74, 153, 116);">bitnami/zookeeper:latest</span><br /><br />Затем запустим Kafka, привязав её к ZooKeeper:<br /><br /><span style="color: rgb(74, 153, 116);">docker run -d --name kafka \</span><br /><span style="color: rgb(74, 153, 116);">-e KAFKA_BROKER_ID=1 \</span><br /><span style="color: rgb(74, 153, 116);">-e KAFKA_ZOOKEEPER_CONNECT=host.docker.internal:2181 \</span><br /><span style="color: rgb(74, 153, 116);">-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 \</span><br /><span style="color: rgb(74, 153, 116);">-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \</span><br /><span style="color: rgb(74, 153, 116);">-p 9092:9092 \</span><br /><span style="color: rgb(74, 153, 116);">bitnami/kafka:latest</span><br /><br /><span style="color: rgb(51, 51, 51);">Если вы на Linux, замените </span><span style="color: rgb(74, 153, 116);">host.docker.internal</span><span style="color: rgb(51, 51, 51);"> на IP вашей машины (</span><span style="color: rgb(74, 153, 116);">172.17.0.1</span><span style="color: rgb(51, 51, 51);"> или </span><span style="color: rgb(74, 153, 116);">localhost</span><span style="color: rgb(51, 51, 51);">).</span></div></div> </div> </div> </div> <style> #rec986069321 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986069321 .t-text{font-size:16px;}}</style> </div> <div id="rec986067851" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 28px;" data-customstyle="yes">Шаг 3: Проверка работы</div></h3> </div> </div> </div> <style> #rec986067851 .t050__uptitle{text-transform:uppercase;}#rec986067851 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec986067851 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986067851 .t050__title{font-size:20px;}}</style> </div> <div id="rec986074191" class="r t-rec t-rec_pt_0 t-rec_pb_0" style="padding-top:0px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">Убедитесь, что оба контейнера работают:<br /><br /><span style="color: rgb(74, 153, 116);">docker ps</span><br /><br />Вы увидите <span style="color: rgb(74, 153, 116);">bitnami/zookeeper</span> и bitnami/kafka в списке запущенных контейнеров.<br /><br /></div></div> </div> </div> </div> <style> #rec986074191 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986074191 .t-text{font-size:16px;}}</style> </div> <div id="rec986067876" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 28px;" data-customstyle="yes">Шаг 4: Взаимодействие внутри контейнера</div></h3> </div> </div> </div> <style> #rec986067876 .t050__uptitle{text-transform:uppercase;}#rec986067876 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec986067876 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986067876 .t050__title{font-size:20px;}}</style> </div> <div id="rec986076366" class="r t-rec t-rec_pt_0 t-rec_pb_0" style="padding-top:0px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">Подключимся к Kafka-контейнеру:<br /><br /><span style="color: rgb(74, 153, 116);">docker exec -it kafka bash</span><br /><br />Создание топика:<br /><br /><span style="color: rgb(74, 153, 116);">kafka-topics.sh --create --topic test --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1</span><br /><br />Проверка:<br /><br /><span style="color: rgb(74, 153, 116);">kafka-topics.sh --list --bootstrap-server localhost:9092</span><br /><br />Запуск продюсера:<br /><br /><span style="color: rgb(74, 153, 116);">kafka-console-producer.sh --broker-list localhost:9092 --topic test</span><br /><br />Запуск консьюмера:<br /><br /><span style="color: rgb(74, 153, 116);">kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning</span></div></div> </div> </div> </div> <style> #rec986076366 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986076366 .t-text{font-size:16px;}}</style> </div> <div id="rec986080186" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 28px;" data-customstyle="yes">Шаг 5: Docker Compose (альтернатива)</div></h3> </div> </div> </div> <style> #rec986080186 .t050__uptitle{text-transform:uppercase;}#rec986080186 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec986080186 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986080186 .t050__title{font-size:20px;}}</style> </div> <div id="rec986076346" class="r t-rec t-rec_pt_0 t-rec_pb_0" style="padding-top:0px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">Можно использовать docker-compose.yml, чтобы управлять системой проще. Создайте файл:<br /><br /><span style="color: rgb(74, 153, 116);">version: '3'</span><br /><span style="color: rgb(74, 153, 116);">services:</span><br /><span style="color: rgb(74, 153, 116);"> zookeeper:</span><br /><span style="color: rgb(74, 153, 116);"> image: bitnami/zookeeper:latest</span><br /><span style="color: rgb(74, 153, 116);"> ports:</span><br /><span style="color: rgb(74, 153, 116);"> - "2181:2181"</span><br /><span style="color: rgb(74, 153, 116);"> environment:</span><br /><span style="color: rgb(74, 153, 116);"> - ALLOW_ANONYMOUS_LOGIN=yes</span><br /><br /><span style="color: rgb(74, 153, 116);"> kafka:</span><br /><span style="color: rgb(74, 153, 116);"> image: bitnami/kafka:latest</span><br /><span style="color: rgb(74, 153, 116);"> ports:</span><br /><span style="color: rgb(74, 153, 116);"> - "9092:9092"</span><br /><span style="color: rgb(74, 153, 116);"> environment:</span><br /><span style="color: rgb(74, 153, 116);"> - KAFKA_BROKER_ID=1</span><br /><span style="color: rgb(74, 153, 116);"> - KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181</span><br /><span style="color: rgb(74, 153, 116);"> - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092</span><br /><span style="color: rgb(74, 153, 116);"> - KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092</span><br /><span style="color: rgb(74, 153, 116);"> depends_on:</span><br /><span style="color: rgb(74, 153, 116);"> - zookeeper</span><br /><br />Запустите:<br /><br /><span style="color: rgb(74, 153, 116);">docker-compose up -d</span><br /><br />Kafka и ZooKeeper будут запущены в изолированной сети, и вы сможете легко ими управлять.</div></div> </div> </div> </div> <style> #rec986076346 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986076346 .t-text{font-size:16px;}}</style> </div> <div id="rec986083661" class="r t-rec t-rec_pt_15 t-rec_pb_15" style="padding-top:15px;padding-bottom:15px; " data-record-type="171"> <!-- T157 --> <div class="t157"> <div class="t-container"> <div class="t-col t-col_8 t-prefix_2"> <div class="t157__wrapper"> <div class="t-divider" style="background-color:#4a9974;"></div> <div field="text" class="t157__text t-text t-text_sm"><div style="font-size: 18px;" data-customstyle="yes">💡 <strong>Docker </strong>— лучший способ для быстрого развёртывания на локальной машине, особенно если вы не хотите вручную ставить Java и настраивать конфиги. Работает одинаково хорошо на Windows, macOS и Linux.</div></div> </div> </div> </div> </div> </div> <div id="rec986086076" class="r t-rec t-rec_pt_0 t-rec_pb_0" style="padding-top:0px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">Теперь, когда Kafka работает в контейнере, переходим к настройке пользователей.</div></div> </div> </div> </div> <style> #rec986086076 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986086076 .t-text{font-size:16px;}}</style> </div> <div id="rec984737731" class="r t-rec t-rec_pt_30 t-rec_pb_30" style="padding-top:30px;padding-bottom:30px;background-color:#f7f9ff; " data-record-type="209" data-bg-color="#f7f9ff"> <!-- T185 --> <div class="t185"> <div class="t-container t-container_flex"> <div class="t-col t-col_flex t-col_6 t-prefix_2"> <div class="t185__text t-text t-text_lg" field="text"><strong>Начните бесплатно изучать работу с Apache Kafka!</strong><br />Дарим демодоступ к обучению на 3 дня, чтобы вы познакомились с материалами и спикерами курса.</div> </div> <div class="t185__butwrapper t-col t-col_2 "> <a
class="t-btn t-btnflex t-btnflex_type_button t-btnflex_md t185__btn"
href="https://slurm.io/kafka?utm_source=blog&utm_medium=organic&utm_campaign=article_kafka"
target="_blank"><span class="t-btnflex__text">Перейти к курсу</span> <style>#rec984737731 .t-btnflex.t-btnflex_type_button {color:#ffffff;background-color:#5c76ff;--border-width:0px;border-style:none !important;border-radius:15px;box-shadow:none !important;transition-duration:0.2s;transition-property:background-color,color,border-color,box-shadow,opacity,transform,gap;transition-timing-function:ease-in-out;}@media (hover:hover) {#rec984737731 .t-btnflex.t-btnflex_type_button:not(.t-animate_no-hover):hover {background-color:#170f63 !important;}#rec984737731 .t-btnflex.t-btnflex_type_button:not(.t-animate_no-hover):focus-visible {background-color:#170f63 !important;}}</style></a> </div> </div> </div> <style> #rec984737731 .t185__text{font-size:18px;color:#170f63;}</style> </div> <div id="rec986067886" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h2 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 32px;" data-customstyle="yes">Создание пользователя</div></h2> </div> </div> </div> <style> #rec986067886 .t050__uptitle{text-transform:uppercase;}#rec986067886 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec986067886 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986067886 .t050__title{font-size:20px;}}</style> </div> <div id="rec986086286" class="r t-rec t-rec_pt_0 t-rec_pb_0" style="padding-top:0px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">Apache Kafka может работать в режиме с ограниченным доступом, где каждый клиент — будь то продюсер или консьюмер — аутентифицируется и авторизуется. Это важно, если вы планируете использовать систему в команде или продакшене. На локальных стендах этот шаг можно пропустить, но для практики и понимания процесса он полезен.</div></div> </div> </div> </div> <style> #rec986086286 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986086286 .t-text{font-size:16px;}}</style> </div> <div id="rec986067916" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 28px;" data-customstyle="yes">Зачем вообще создавать пользователей?</div></h3> </div> </div> </div> <style> #rec986067916 .t050__uptitle{text-transform:uppercase;}#rec986067916 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec986067916 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986067916 .t050__title{font-size:20px;}}</style> </div> <div id="rec986089061" class="r t-rec t-rec_pt_0 t-rec_pb_0" style="padding-top:0px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">Kafka поддерживает механизмы:<br /><br /><ul><li data-list="bullet"><strong>SASL/PLAIN</strong> — простая аутентификация по логину и паролю;</li><li data-list="bullet"><strong>SASL/SCRAM</strong> — хешированная схема хранения паролей;</li><li data-list="bullet"><strong>SSL </strong>— обмен ключами и сертификатами;</li><li data-list="bullet"><strong>ACL (Access Control Lists)</strong> — контроль прав доступа на уровне топиков и ресурсов.</li></ul><br />В этом разделе покажем, как <strong>добавить пользователя и включить базовую защиту через SASL/PLAIN</strong></div></div> </div> </div> </div> <style> #rec986089061 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986089061 .t-text{font-size:16px;}}</style> </div> <div id="rec986080901" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 28px;" data-customstyle="yes">Шаг 1: Включение SASL в конфиге Kafka</div></h3> </div> </div> </div> <style> #rec986080901 .t050__uptitle{text-transform:uppercase;}#rec986080901 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec986080901 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986080901 .t050__title{font-size:20px;}}</style> </div> <div id="rec986090506" class="r t-rec t-rec_pt_0 t-rec_pb_0" style="padding-top:0px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">Откройте файл:<br /><br /><span style="color: rgb(74, 153, 116);">/opt/kafka/config/server.properties</span><br /><br />Добавьте или раскомментируйте:<br /><br /><span style="color: rgb(74, 153, 116);">listeners=SASL_PLAINTEXT://:9092</span><br /><span style="color: rgb(74, 153, 116);">advertised.listeners=SASL_PLAINTEXT://localhost:9092</span><br /><span style="color: rgb(74, 153, 116);">security.inter.broker.protocol=SASL_PLAINTEXT</span><br /><span style="color: rgb(74, 153, 116);">sasl.mechanism.inter.broker.protocol=PLAIN</span><br /><span style="color: rgb(74, 153, 116);">sasl.enabled.mechanisms=PLAIN</span><br /><span style="color: rgb(74, 153, 116);">authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer</span><br /><span style="color: rgb(74, 153, 116);">super.users=User:admin</span><br /><br /></div></div> </div> </div> </div> <style> #rec986090506 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986090506 .t-text{font-size:16px;}}</style> </div> <div id="rec986080711" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 28px;" data-customstyle="yes">Шаг 2: Добавление паролей пользователей</div></h3> </div> </div> </div> <style> #rec986080711 .t050__uptitle{text-transform:uppercase;}#rec986080711 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec986080711 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986080711 .t050__title{font-size:20px;}}</style> </div> <div id="rec986090621" class="r t-rec t-rec_pt_0 t-rec_pb_0" style="padding-top:0px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">Создайте файл <span style="color: rgb(74, 153, 116);">kafka_server_jaas.conf:</span><br /><br /><span style="color: rgb(74, 153, 116);">KafkaServer {</span><br /><span style="color: rgb(74, 153, 116);"> org.apache.kafka.common.security.plain.PlainLoginModule required</span><br /><span style="color: rgb(74, 153, 116);"> username="admin"</span><br /><span style="color: rgb(74, 153, 116);"> password="admin-secret"</span><br /><span style="color: rgb(74, 153, 116);"> user_admin="admin-secret"</span><br /><span style="color: rgb(74, 153, 116);"> user_user1="user1-secret";</span><br /><span style="color: rgb(74, 153, 116);">};</span><br /><br />Здесь <span style="color: rgb(74, 153, 116);">user_user1</span> — наш пользователь.</div></div> </div> </div> </div> <style> #rec986090621 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986090621 .t-text{font-size:16px;}}</style> </div> <div id="rec986080301" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 28px;" data-customstyle="yes">Шаг 3: Подключение JAAS-файла</div></h3> </div> </div> </div> <style> #rec986080301 .t050__uptitle{text-transform:uppercase;}#rec986080301 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec986080301 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986080301 .t050__title{font-size:20px;}}</style> </div> <div id="rec986093356" class="r t-rec t-rec_pt_0 t-rec_pb_0" style="padding-top:0px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">Добавьте путь к kafka_server_jaas.conf в переменную окружения:<br /><br /><span style="color: rgb(74, 153, 116);">export KAFKA_OPTS="-Djava.security.auth.login.config=/opt/kafka/config/kafka_server_jaas.conf"</span><br /><br />Это можно прописать в systemd-юните или запускном скрипте Kafka.<br /><br /></div></div> </div> </div> </div> <style> #rec986093356 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986093356 .t-text{font-size:16px;}}</style> </div> <div id="rec986080286" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 28px;" data-customstyle="yes"><strong>Шаг 4: Перезапуск</strong></div></h3> </div> </div> </div> <style> #rec986080286 .t050__uptitle{text-transform:uppercase;}#rec986080286 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec986080286 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986080286 .t050__title{font-size:20px;}}</style> </div> <div id="rec986094026" class="r t-rec t-rec_pt_0 t-rec_pb_0" style="padding-top:0px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">Остановите и запустите Kafka с учётом настроек:<br /><br /><span style="color: rgb(74, 153, 116);">systemctl restart kafka</span><br /><br />Или вручную:<br /><br /><span style="color: rgb(74, 153, 116);">/opt/kafka/bin/kafka-server-stop.sh</span><br /><span style="color: rgb(74, 153, 116);">/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties</span></div></div> </div> </div> </div> <style> #rec986094026 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986094026 .t-text{font-size:16px;}}</style> </div> <div id="rec986067926" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 28px;" data-customstyle="yes"><strong>Шаг 5: Проверка авторизации клиента</strong></div></h3> </div> </div> </div> <style> #rec986067926 .t050__uptitle{text-transform:uppercase;}#rec986067926 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec986067926 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986067926 .t050__title{font-size:20px;}}</style> </div> <div id="rec986095681" class="r t-rec t-rec_pt_0 t-rec_pb_0" style="padding-top:0px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">Создайте аналогичный файл для клиента:<br /><br /><span style="color: rgb(74, 153, 116);">KafkaClient {</span><br /><span style="color: rgb(74, 153, 116);"> org.apache.kafka.common.security.plain.PlainLoginModule required</span><br /><span style="color: rgb(74, 153, 116);"> username="user1"</span><br /><span style="color: rgb(74, 153, 116);"> password="user1-secret";</span><br /><span style="color: rgb(74, 153, 116);">};</span><br /><br />И при запуске консольных утилит укажите его:<br /><br /><span style="color: rgb(74, 153, 116);">KAFKA_OPTS="-Djava.security.auth.login.config=/opt/kafka/config/kafka_client_jaas.conf" \</span><br /><span style="color: rgb(74, 153, 116);">kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning \</span><br /><span style="color: rgb(74, 153, 116);">--consumer.config /opt/kafka/config/client.properties</span><br /><br />Файл client.properties должен содержать:<br /><br /><span style="color: rgb(74, 153, 116);">security.protocol=SASL_PLAINTEXT</span><br /><span style="color: rgb(74, 153, 116);">sasl.mechanism=PLAIN</span><br /><br /></div></div> </div> </div> </div> <style> #rec986095681 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986095681 .t-text{font-size:16px;}}</style> </div> <div id="rec986095826" class="r t-rec t-rec_pt_0 t-rec_pb_0" style="padding-top:0px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">Теперь вы знаете, <strong>как создать пользователя</strong>, защитить соединение и управлять доступом. Это особенно важно при масштабировании и работе в командах.<br /><br />Следующий шаг — подготовка файлов и папок. Переходим к загрузке дистрибутива.</div></div> </div> </div> </div> <style> #rec986095826 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986095826 .t-text{font-size:16px;}}</style> </div> <div id="rec986080961" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 32px;" data-customstyle="yes">Загрузка файлов</div></h3> </div> </div> </div> <style> #rec986080961 .t050__uptitle{text-transform:uppercase;}#rec986080961 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec986080961 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986080961 .t050__title{font-size:20px;}}</style> </div> <div id="rec986097231" class="r t-rec t-rec_pt_0 t-rec_pb_0" style="padding-top:0px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">Перед тем как запустить Kafka, нужно загрузить дистрибутив и разложить файлы по нужным директориям. В большинстве случаев это делается вручную: вы скачиваете архив, распаковываете его и указываете путь в переменных окружения.</div></div> </div> </div> </div> <style> #rec986097231 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986097231 .t-text{font-size:16px;}}</style> </div> <div id="rec986080936" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 28px;" data-customstyle="yes">Где скачать</div></h3> </div> </div> </div> <style> #rec986080936 .t050__uptitle{text-transform:uppercase;}#rec986080936 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec986080936 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986080936 .t050__title{font-size:20px;}}</style> </div> <div id="rec986098451" class="r t-rec t-rec_pt_0 t-rec_pb_0" style="padding-top:0px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">Официальный источник — <strong><a href="https://kafka.apache.org/downloads" target="_blank" rel="noreferrer noopener">«сайт Apache Kafka»</a></strong>:<br /><br />Выбирайте версию, совместимую с вашей версией Scala и Java. Рекомендуется скачивать <strong>binary builds with Scala 2.13</strong>, так как они чаще всего используются.</div></div> </div> </div> </div> <style> #rec986098451 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986098451 .t-text{font-size:16px;}}</style> </div> <div id="rec986067956" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 28px;" data-customstyle="yes">Пример команды для Linux или macOS</div></h3> </div> </div> </div> <style> #rec986067956 .t050__uptitle{text-transform:uppercase;}#rec986067956 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec986067956 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986067956 .t050__title{font-size:20px;}}</style> </div> <div id="rec986099456" class="r t-rec t-rec_pt_0 t-rec_pb_0" style="padding-top:0px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes"><span style="color: rgb(74, 153, 116);">wget https://downloads.apache.org/kafka/3.6.0/kafka_2.13-3.6.0.tgz</span><br /><span style="color: rgb(74, 153, 116);">tar -xvzf kafka_2.13-3.6.0.tgz</span><br /><span style="color: rgb(74, 153, 116);">sudo mv kafka_2.13-3.6.0 /opt/kafka</span></div></div> </div> </div> </div> <style> #rec986099456 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986099456 .t-text{font-size:16px;}}</style> </div> <div id="rec986080356" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 28px;" data-customstyle="yes"><strong>Пример для Windows</strong></div></h3> </div> </div> </div> <style> #rec986080356 .t050__uptitle{text-transform:uppercase;}#rec986080356 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec986080356 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986080356 .t050__title{font-size:20px;}}</style> </div> <div id="rec986100161" class="r t-rec t-rec_pt_0 t-rec_pb_0" style="padding-top:0px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes"><ol><li data-list="ordered">Перейдите <strong><a href="https://kafka.apache.org/downloads" target="_blank" rel="noreferrer noopener">«по ссылке»</a></strong></li><li data-list="ordered">Скачайте архив <span style="color: rgb(74, 153, 116);">.tgz</span></li><li data-list="ordered">Распакуйте его с помощью 7-Zip или встроенного архиватора</li><li data-list="ordered">Поместите папку в <span style="color: rgb(74, 153, 116);">C:\kafka</span> или другую директорию без пробелов в названии</li></ol></div></div> </div> </div> </div> <style> #rec986100161 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986100161 .t-text{font-size:16px;}}</style> </div> <div id="rec986080311" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 28px;" data-customstyle="yes">Структура папки Kafka</div></h3> </div> </div> </div> <style> #rec986080311 .t050__uptitle{text-transform:uppercase;}#rec986080311 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec986080311 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986080311 .t050__title{font-size:20px;}}</style> </div> <div id="rec986101501" class="r t-rec t-rec_pt_0 t-rec_pb_0" style="padding-top:0px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">После распаковки вы получите примерно такую структуру:<br /><br />kafka_2.13-3.6.0/<br />├── bin/<br />├── config/<br />├── libs/<br />├── logs/<br />└── site-docs/<br /><br /><ul><li data-list="bullet" style="color: rgb(74, 153, 116);"><span style="color: rgb(74, 153, 116);">bin/ </span><span style="color: rgb(51, 51, 51);">— исполняемые скрипты для запуска Kafka, ZooKeeper, создания топиков и др.</span></li><li data-list="bullet" style="color: rgb(74, 153, 116);"><span style="color: rgb(74, 153, 116);">config/ </span><span style="color: rgb(51, 51, 51);">— конфигурационные файлы: server.properties, zookeeper.properties</span></li><li data-list="bullet" style="color: rgb(74, 153, 116);"><span style="color: rgb(74, 153, 116);">logs/ </span><span style="color: rgb(51, 51, 51);">— логи работы брокера</span></li><li data-list="bullet" style="color: rgb(74, 153, 116);"><span style="color: rgb(74, 153, 116);">libs/ </span><span style="color: rgb(51, 51, 51);">— зависимости Java</span></li></ul></div></div> </div> </div> </div> <style> #rec986101501 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986101501 .t-text{font-size:16px;}}</style> </div> <div id="rec986103961" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 28px;" data-customstyle="yes"><strong>Рекомендации</strong></div></h3> </div> </div> </div> <style> #rec986103961 .t050__uptitle{text-transform:uppercase;}#rec986103961 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec986103961 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986103961 .t050__title{font-size:20px;}}</style> </div> <div id="rec986104076" class="r t-rec t-rec_pt_0 t-rec_pb_0" style="padding-top:0px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes"><ul><li data-list="bullet">Убедитесь, что у вас достаточно свободного места (минимум 2–3 ГБ).</li><li data-list="bullet">Не размещайте Kafka в папках с кириллическими символами или пробелами.</li><li data-list="bullet">При использовании Docker загрузка архива не требуется — всё работает через образы.</li></ul></div></div> </div> </div> </div> <style> #rec986104076 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986104076 .t-text{font-size:16px;}}</style> </div> <div id="rec986105681" class="r t-rec t-rec_pt_15 t-rec_pb_15" style="padding-top:15px;padding-bottom:15px; " data-record-type="171"> <!-- T157 --> <div class="t157"> <div class="t-container"> <div class="t-col t-col_8 t-prefix_2"> <div class="t157__wrapper"> <div class="t-divider" style="background-color:#4a9974;"></div> <div field="text" class="t157__text t-text t-text_sm"><div style="font-size: 18px;" data-customstyle="yes">⚡ На этом этапе система уже скачана, распакована и готова к запуску. Осталось лишь немного настроить — и можно переходить к тестированию.</div></div> </div> </div> </div> </div> </div> <div id="rec986104146" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 28px;" data-customstyle="yes">Заключение</div></h3> </div> </div> </div> <style> #rec986104146 .t050__uptitle{text-transform:uppercase;}#rec986104146 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec986104146 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986104146 .t050__title{font-size:20px;}}</style> </div> <div id="rec986108116" class="r t-rec t-rec_pt_0 t-rec_pb_0" style="padding-top:0px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes"><span style="font-family: Inter;">Apache Kafka — мощный инструмент для передачи данных в реальном времени. Несмотря на репутацию сложной системы, на практике она устанавливается и настраивается за полчаса — особенно если вы работаете локально или через Docker.</span><br /><br /><strong style="font-family: Inter;">Мы разобрали:</strong><br /><br /><ul><li data-list="bullet"><strong style="font-family: Inter;">как установить</strong><span style="font-family: Inter;"> на Windows, Ubuntu, macOS;</span></li><li data-list="bullet"><span style="font-family: Inter;">как поднять Kafka через Docker без лишних зависимостей;</span></li><li data-list="bullet"><span style="font-family: Inter;">базовую архитектуру и назначение компонентов;</span></li><li data-list="bullet"><strong style="font-family: Inter;">как настроить Kafka</strong><span style="font-family: Inter;"> для передачи сообщений;</span></li><li data-list="bullet"><strong style="font-family: Inter;">как запустить систему</strong><span style="font-family: Inter;">, создать топик, передать данные;</span></li><li data-list="bullet"><span style="font-family: Inter;">основы авторизации с помощью SASL/PLAIN;</span></li><li data-list="bullet"><span style="font-family: Inter;">требования к системе и особенности запуска с systemd.</span></li></ul><br /><span style="font-family: Inter;">Теперь у вас на руках все инструменты, чтобы самостоятельно </span><strong style="font-family: Inter;">развернуть Kafka</strong><span style="font-family: Inter;">, экспериментировать с её возможностями и начать строить потоковую архитектуру.</span></div></div> </div> </div> </div> <style> #rec986108116 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986108116 .t-text{font-size:16px;}}</style> </div> <div id="rec986108441" class="r t-rec t-rec_pt_15 t-rec_pb_15" style="padding-top:15px;padding-bottom:15px; " data-record-type="171"> <!-- T157 --> <div class="t157"> <div class="t-container"> <div class="t-col t-col_8 t-prefix_2"> <div class="t157__wrapper"> <div class="t-divider" style="background-color:#4a9974;"></div> <div field="text" class="t157__text t-text t-text_sm"><div style="font-size: 18px;" data-customstyle="yes"><span style="font-family: Inter;">⚙️ </span><strong style="font-family: Inter;">Kafka открывает двери в мир больших данных, микросервисов и real-time аналитики</strong><span style="font-family: Inter;">. Даже если вы не планируете становиться DevOps-инженером — умение работать с Kafka даст вам серьёзное преимущество.</span></div></div> </div> </div> </div> </div> </div> <div id="rec986110011" class="r t-rec t-rec_pt_0 t-rec_pb_0" style="padding-top:0px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes"><strong style="font-family: Inter;">Если вы дочитали до этого момента — значит, готовы двигаться дальше.</strong><span style="font-family: Inter;"> </span><strong style="font-family: Inter;">Следующий шаг — попробовать на практике</strong><span style="font-family: Inter;">. Разверните Kafka, создайте пару топиков, подключите простенький микросервис или Python-скрипт и понаблюдайте, как всё работает в реальном времени.</span></div></div> </div> </div> </div> <style> #rec986110011 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986110011 .t-text{font-size:16px;}}</style> </div> <div id="rec986110591" class="r t-rec t-rec_pt_45 t-rec_pb_0" style="padding-top:45px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><div style="font-size: 28px;" data-customstyle="yes">📌 Читайте блог Слёрма</div></h3> </div> </div> </div> <style> #rec986110591 .t050__uptitle{text-transform:uppercase;}#rec986110591 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec986110591 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986110591 .t050__title{font-size:20px;}}</style> </div> <div id="rec986111281" class="r t-rec t-rec_pt_0 t-rec_pb_0" style="padding-top:0px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes"><strong style="font-family: Inter;">Если тема оказалась вам полезной — обязательно загляните в другие статьи блога slurm.io</strong><span style="font-family: Inter;">. Мы регулярно публикуем гайды по DevOps, микросервисам, Kubernetes и облачным технологиям.</span></div></div> </div> </div> </div> <style> #rec986111281 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec986111281 .t-text{font-size:16px;}}</style> </div> <div id="rec986113126" class="r t-rec t-rec_pt_15 t-rec_pb_15" style="padding-top:15px;padding-bottom:15px; " data-record-type="171"> <!-- T157 --> <div class="t157"> <div class="t-container"> <div class="t-col t-col_8 t-prefix_2"> <div class="t157__wrapper"> <div class="t-divider" style="background-color:#4a9974;"></div> <div field="text" class="t157__text t-text t-text_sm"><div style="font-size: 18px;" data-customstyle="yes"><span style="font-family: Inter;">✅ </span><strong style="font-family: Inter;">Хотите научиться работать с Kafka в продакшене</strong><span style="font-family: Inter;">? Следите за нашими курсами и воркшопами — в них вы научитесь не только настраивать эту платформу, но и строить отказоустойчивые кластеры, подключать мониторинг и интегрировать её в CI/CD-пайплайны.</span></div></div> </div> </div> </div> </div> </div> <div id="rec984737776" class="r t-rec t-rec_pt_0 t-rec_pb_0" style="padding-top:0px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes"><strong style="font-size: 30px;">→ </strong><strong><a href="https://slurm.io/kafka?utm_source=blog&utm_medium=organic&utm_campaign=article_kafka" target="_blank" rel="noreferrer noopener">Перейти к курсу</a></strong></div></div> </div> </div> </div> <style> #rec984737776 .t-text{font-size:16px;font-family:'Inter';}</style> </div> <div id="rec984737786" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <script type="application/ld+json">
{
"@context": "https://schema.org/",
"@type": "BlogPosting",
"@id": "https://slurm.io/sre-inzhener-kto-ehto-i-kakie-zadachi-reshaet",
"mainEntityOfPage": "https://slurm.io/sre-inzhener-kto-ehto-i-kakie-zadachi-reshaet",
"headline": "SRE-инженер — кто это и какие задачи решает",
"name": "SRE-инженер — кто это и какие задачи решает",
"description": "Site Reliability Engineer (SRE) — это инженер по надежности сайтов. Этот специалист совмещает навыки разработки и администрирования инфраструктуры. Он отвечает за отказоустойчивость сервисов, автоматизацию процессов, мониторинг систем. Профессия SRE появилась благодаря компании Google, которая первой внедрила этот подход для повышения стабильности своих продуктов.",
"datePublished": "2025-04-08",
"dateModified": "2025-04-08",
"author": {
"@type": "Person",
"@id": "https://slurm.io/sre-inzhener-kto-ehto-i-kakie-zadachi-reshaet",
"name": "Илья Иванов",
"url": "https://slurm.io/sre-inzhener-kto-ehto-i-kakie-zadachi-reshaet",
"image": {
"@type": "ImageObject",
"@id": "https://optim.tildacdn.com/tild3666-6136-4333-a230-346133313763/-/cover/144x144/center/center/-/format/webp/noroot.png.webp",
"url": "https://optim.tildacdn.com/tild3666-6136-4333-a230-346133313763/-/cover/144x144/center/center/-/format/webp/noroot.png.webp",
"height": "114",
"width": "114"
}
},
"publisher": {
"@type": "Organization",
"@id": "https://slurm.io/",
"name": "Слёрм",
"logo": {
"@type": "ImageObject",
"@id": "https://static.tildacdn.com/tild6135-3939-4135-b731-656566303162/white.svg",
"url": "https://static.tildacdn.com/tild6135-3939-4135-b731-656566303162/white.svg",
"width": "105",
"height": "41"
}
},
"image": {
"@type": "ImageObject",
"@id": "https://optim.tildacdn.com/tild6166-3733-4333-b336-366133663665/-/resize/480x360/-/format/webp/_3.png.webp",
"url": "https://optim.tildacdn.com/tild6166-3733-4333-b336-366133663665/-/resize/480x360/-/format/webp/_3.png.webp",
"height": "640",
"width": "360"
},
"url": "https://slurm.io/sre-inzhener-kto-ehto-i-kakie-zadachi-reshaet",
"isPartOf": {
"@type" : "Blog",
"@id": "https://slurm.io/blog",
"name": "Слёрм Blog",
"publisher": {
"@type": "Organization",
"@id": "https://slurm.io/",
"name": "Слёрм"
}
}
}
</script> <!-- nominify end --> </div> </div> </div> </div> <div id="rec986080361" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <script type="application/ld+json">
{
"@context": "https://schema.org/",
"@type": "BlogPosting",
"@id": "https://slurm.io/sre-inzhener-kto-ehto-i-kakie-zadachi-reshaet",
"mainEntityOfPage": "https://slurm.io/sre-inzhener-kto-ehto-i-kakie-zadachi-reshaet",
"headline": "SRE-инженер — кто это и какие задачи решает",
"name": "SRE-инженер — кто это и какие задачи решает",
"description": "Site Reliability Engineer (SRE) — это инженер по надежности сайтов. Этот специалист совмещает навыки разработки и администрирования инфраструктуры. Он отвечает за отказоустойчивость сервисов, автоматизацию процессов, мониторинг систем. Профессия SRE появилась благодаря компании Google, которая первой внедрила этот подход для повышения стабильности своих продуктов.",
"datePublished": "2025-04-08",
"dateModified": "2025-04-08",
"author": {
"@type": "Person",
"@id": "https://slurm.io/sre-inzhener-kto-ehto-i-kakie-zadachi-reshaet",
"name": "Илья Иванов",
"url": "https://slurm.io/sre-inzhener-kto-ehto-i-kakie-zadachi-reshaet",
"image": {
"@type": "ImageObject",
"@id": "https://optim.tildacdn.com/tild3666-6136-4333-a230-346133313763/-/cover/144x144/center/center/-/format/webp/noroot.png.webp",
"url": "https://optim.tildacdn.com/tild3666-6136-4333-a230-346133313763/-/cover/144x144/center/center/-/format/webp/noroot.png.webp",
"height": "114",
"width": "114"
}
},
"publisher": {
"@type": "Organization",
"@id": "https://slurm.io/",
"name": "Слёрм",
"logo": {
"@type": "ImageObject",
"@id": "https://static.tildacdn.com/tild6135-3939-4135-b731-656566303162/white.svg",
"url": "https://static.tildacdn.com/tild6135-3939-4135-b731-656566303162/white.svg",
"width": "105",
"height": "41"
}
},
"image": {
"@type": "ImageObject",
"@id": "https://optim.tildacdn.com/tild6166-3733-4333-b336-366133663665/-/resize/480x360/-/format/webp/_3.png.webp",
"url": "https://optim.tildacdn.com/tild6166-3733-4333-b336-366133663665/-/resize/480x360/-/format/webp/_3.png.webp",
"height": "640",
"width": "360"
},
"url": "https://slurm.io/sre-inzhener-kto-ehto-i-kakie-zadachi-reshaet",
"isPartOf": {
"@type" : "Blog",
"@id": "https://slurm.io/blog",
"name": "Слёрм Blog",
"publisher": {
"@type": "Organization",
"@id": "https://slurm.io/",
"name": "Слёрм"
}
}
}
</script> <!-- nominify end --> </div> </div> </div> </div> <div id="rec984737801" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [{
"@type": "Question",
"name": "✅ Кто такой SRE-инженер?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Это специалист по надежности сервисов, который сочетает навыки разработки и эксплуатации."
}
}, {
"@type": "Question",
"name": "✅ Какие задачи решает?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Автоматизация, мониторинг, управление отказоустойчивостью, работа с CI/CD."
}
}, {
"@type": "Question",
"name": "✅ Чем SRE отличается от DevOps?",
"acceptedAnswer": {
"@type": "Answer",
"text": "DevOps — это культура, а SRE — конкретные инженерные практики для обеспечения стабильности."
}
}, {
"@type": "Question",
"name": "✅ Как стать SRE-инженером?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Изучить программирование, Linux, облачные технологии, инструменты мониторинга"
}
}]
}
</script> <!-- nominify end --> </div> </div> </div> </div> <div id="rec984737811" class="r t-rec t-rec_pt_60 t-rec_pb_0" style="padding-top:60px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><strong>Статью подготовили</strong></h3> </div> </div> </div> <style> #rec984737811 .t050__uptitle{text-transform:uppercase;}#rec984737811 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec984737811 .t050__title{font-size:28px;line-height:1.3;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec984737811 .t050__title{font-size:20px;}}</style> </div> <div id="rec984737816" class="r t-rec t-rec_pt_15" style="padding-top:15px; " data-record-type="165"> <!-- T152 --> <div class="t152"> <div class="t-container_8"> <div class="t-row"> <div class="t152__col t-col t-col_2"> <img class="t152__img t-img"
src="https://thb.tildacdn.com/tild6532-6566-4237-a263-356230626239/-/empty/image.png" data-original="https://static.tildacdn.com/tild6532-6566-4237-a263-356230626239/image.png"
imgfield="img"
alt=""> </div> <div class="t152__col t-col t-col_6 t152__wrapper"> <div class="t152__textwrapper"> <div class="t152__autor-title t-name t-name_sm" field="title">Редакция Слёрма</div> </div> </div> </div> </div> </div> <style> #rec984737816 .t152__autor-title{font-weight:400;}</style> </div> <div id="rec984737826" class="r t-rec t-rec_pt_30 t-rec_pb_0" style="padding-top:30px;padding-bottom:0px; " data-record-type="106"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="font-size: 18px;" data-customstyle="yes">Понравилась статья? Будем рады вашему лайку и репосту — вдруг кому-то тоже пригодится:)</div></div> </div> </div> </div> <style> #rec984737826 .t-text{font-size:18px;font-family:'Inter';}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec984737826 .t-text{font-size:16px;}}</style> </div> <div id="rec984737831" class="r t-rec t-rec_pt_15 t-rec_pb_45" style="padding-top:15px;padding-bottom:45px; " data-record-type="797"> <!-- t797 --> <div class="t797"> <div class="t-container"> <div class="t-col t-col_8 t-prefix_2 t-align_center"> <div class="t797__wrapper t797__wrapper_padding" style="background-color:#e3e7ff;"> <div class="t794__title t-descr t-descr_md t-animate" data-animate-style="fadein" data-animate-group="yes" data-animate-order="1" field="title">Оцените статью</div> <div class="t797__answers t-vote" style="margin-top:-20px" data-vote-type="single" data-vote-id="984737831" data-vote-visibility="onclick"> <button type="button" class="t-vote__btn-wrapper js-vote-item t-animate" style="margin:20px 10px 0px 10px;" data-answer-id="2268461755720" data-animate-style="zoomin" data-animate-chain="yes"> <div class="t-vote__btn-el js-vote-btn js-sendvote-btn"> <img
src="https://static.tildacdn.com/lib/emoji/twemoji/neutral_face_color.svg"
class="t797__img t797__img_width t-img"
imgfield="li_img__2268461755720"
alt=""
/> </div> <div class="t-vote__btn-res t-descr t-descr_xxs t-align_center " style="display:none;"> <span class="t-vote__btn-res__num js-vote-count">0</span> </div> </button> <button type="button" class="t-vote__btn-wrapper js-vote-item t-animate" style="margin:20px 10px 0px 10px;" data-answer-id="9268461755722" data-animate-style="zoomin" data-animate-chain="yes"> <div class="t-vote__btn-el js-vote-btn js-sendvote-btn"> <img
src="https://static.tildacdn.com/lib/emoji/twemoji/smiling_face_with_smiling_eyes_color.svg"
class="t797__img t797__img_width t-img"
imgfield="li_img__9268461755722"
alt=""
/> </div> <div class="t-vote__btn-res t-descr t-descr_xxs t-align_center " style="display:none;"> <span class="t-vote__btn-res__num js-vote-count">0</span> </div> </button> <button type="button" class="t-vote__btn-wrapper js-vote-item t-animate" style="margin:20px 10px 0px 10px;" data-answer-id="1268461755723" data-animate-style="zoomin" data-animate-chain="yes"> <div class="t-vote__btn-el js-vote-btn js-sendvote-btn"> <img
src="https://static.tildacdn.com/lib/emoji/twemoji/starstruck_color.svg"
class="t797__img t797__img_width t-img"
imgfield="li_img__1268461755723"
alt=""
/> </div> <div class="t-vote__btn-res t-descr t-descr_xxs t-align_center " style="display:none;"> <span class="t-vote__btn-res__num js-vote-count">0</span> </div> </button> </div> </div> </div> </div> </div> <script>t_onReady(function() {t_onFuncLoad('t797_init',function() {t797_init(984737831);});});</script> <style> #rec984737831 .t797__wrapper{border-radius:10px;}</style> </div> <div id="rec984737836" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <!-- nominify begin --> <script src="https://yastatic.net/share2/share.js"></script> <div class="ya-share2" data-curtain data-size="l" data-services="vkontakte,odnoklassniki,telegram,whatsapp,linkedin"></div> <!-- nominify end --> </div> </div> </div> </div> <div id="rec984737851" class="r t-rec t-rec_pt_60 t-rec_pb_0" style="padding-top:60px;padding-bottom:0px; " data-record-type="60"> <!-- T050 --> <div class="t050"> <div class="t-container t-align_left"> <div class="t-col t-col_8 t-prefix_2"> <h3 class="t050__title t-title t-title_xxl" field="title"><strong>Читайте также:</strong></h3> </div> </div> </div> <style> #rec984737851 .t050__uptitle{text-transform:uppercase;}#rec984737851 .t050__title{color:#161518;}@media screen and (min-width:480px){#rec984737851 .t050__title{font-size:28px;line-height:1.3;}}</style> </div> <div id="rec984737861" class="r t-rec t-rec_pt_15 t-rec_pb_120" style="padding-top:15px;padding-bottom:120px; " data-animationappear="off" data-record-type="896"> <!-- t896 --> <!-- @classes t-descr t-descr_xxs t-descr_sm t-title t-title_xxs t-text t-text_md t-heading t-heading_lg t-name t-uptitle t-uptitle_sm t-uptitle_xs t-name_md --> <div class="t896"> <!-- grid container start --> <div class="js-feed t-feed t-feed_row" data-feed-grid-type="row" data-feed-recid="984737861"> <div class="t-feed__container t-container"> <div class="js-feed-parts-select-container t-col t-col_8 t-prefix_2"></div> </div> <!-- preloader els --> <div class="js-feed-preloader t-feed__post-preloader_row t-feed__post-preloader__container_hidden t-container"> <div class="t-feed__post-preloader t-col t-col_8 t-prefix_2"> <div class="t-feed__post-preloader__wrapper"> <div class="t-feed__post-preloader__img"></div> <div class="t-feed__post-preloader__textwrapper"> <div class="t-feed__post-preloader__text"></div> <div class="t-feed__post-preloader__text"></div> <div class="t-feed__post-preloader__text"></div> <div class="t-feed__post-preloader__text"></div> <div class="t-feed__post-preloader__text"></div> </div> </div> </div> <div class="t-feed__post-preloader t-col t-col_8 t-prefix_2"> <div class="t-feed__post-preloader__wrapper"> <div class="t-feed__post-preloader__img"></div> <div class="t-feed__post-preloader__textwrapper"> <div class="t-feed__post-preloader__text"></div> <div class="t-feed__post-preloader__text"></div> <div class="t-feed__post-preloader__text"></div> <div class="t-feed__post-preloader__text"></div> <div class="t-feed__post-preloader__text"></div> </div> </div> </div> <div class="t-feed__post-preloader t-col t-col_8 t-prefix_2"> <div class="t-feed__post-preloader__wrapper"> <div class="t-feed__post-preloader__img"></div> <div class="t-feed__post-preloader__textwrapper"> <div class="t-feed__post-preloader__text"></div> <div class="t-feed__post-preloader__text"></div> <div class="t-feed__post-preloader__text"></div> <div class="t-feed__post-preloader__text"></div> <div class="t-feed__post-preloader__text"></div> </div> </div> </div> </div> <!-- preloader els end --> <ul role="list" class="js-feed-container t-feed__container t-container" data-feed-show-count="4" data-feed-show-slice="1"></ul> </div> <!-- grid container end --> </div> <style>#rec984737861 .t-feed__parts-switch-btn{border:1px solid #000000;border-radius:40px;}#rec984737861 .t-feed__parts-switch-btn span,#rec984737861 .t-feed__parts-switch-btn a{color:#000000;padding:6px 18px 6px;border-radius:40px;}#rec984737861 .t-feed__parts-switch-btn.t-active{background-color:#000000;}#rec984737861 .t-feed__parts-switch-btn.t-active span,#rec984737861 .t-feed__parts-switch-btn.t-active a{color:#ffffff !important;}#rec984737861 .t-feed__post-popup__cover-wrapper .t-slds__arrow{background-color:rgba(255,255,255,1);}#rec984737861 .t-feed__post-popup__cover-wrapper .t-slds__bullet_active .t-slds__bullet_body,#rec984737861 .t-feed__post-popup__cover-wrapper .t-slds__bullet:hover .t-slds__bullet_body{background-color:#222 !important;}</style> <style> #rec984737861 .t-feed__parts-switch-btn{color:#000000;font-weight:400;}</style> <script>t_onReady(function() {var separator_optsObj={height:'',color:'',opacity:'',hideSeparator:false};var popup_optsObj={popupBgColor:'#ffffff',overlayBgColorRgba:'rgba(255,255,255,1)',closeText:'',iconColor:'#000000',popupStat:'',titleColor:'',textColor:'',subtitleColor:'',datePos:'aftertext',partsPos:'aftertext',imagePos:'aftertitle',inTwoColumns:false,zoom:false,styleRelevants:'',methodRelevants:'random',titleRelevants:'',showRelevants:'',shareStyle:'',shareBg:'',isShare:false,shareServices:'',shareFBToken:'',showDate:true,bgSize:'cover',titleFontFamily:'',descrFontFamily:'',subtitleFontFamily:''};var arrowtop_optsObj={isShow:false,style:'',color:'',bottom:'',left:'',right:''};var parts_optsObj={partsBgColor:'',partsBorderSize:'1px',partsBorderColor:'#000000',align:'center'};var gallery_optsObj={control:'',arrowSize:'',arrowBorderSize:'',arrowColor:'',arrowColorHover:'',arrowBg:'#ffffff',arrowBgHover:'',arrowBgOpacity:'',arrowBgOpacityHover:'',showBorder:'',dotsWidth:'',dotsBg:'',dotsActiveBg:'',dotsBorderSize:''};var colWithBg_optsObj={paddingSize:'',background:'',borderRadius:'',shadow:'',shadowSize:'',shadowOpacity:'',shadowHover:'',shadowSizeHover:'',shadowOpacityHover:'',shadowShiftyHover:''};var options={recid:'984737861',feeduid:'784947206928',previewmode:'yes',align:'',amountOfPosts:'4',reverse:'desc',blocksInRow:'',blocksClass:'',blocksWidth:'',colClass:'8',prefixClass:'2',vindent:'',dateFormat:'4',timeFormat:'',imageRatio:'75',hasOriginalAspectRatio:false,imageHeight:'',imageWidth:'',dateFilter:'all',showPartAll:true,showImage:true,showShortDescr:true,showParts:true,showDate:true,hideFeedParts:true,parts_opts:parts_optsObj,btnsAlign:false,colWithBg:colWithBg_optsObj,separator:separator_optsObj,btnAllPostsText:'',popup_opts:popup_optsObj,arrowtop_opts:arrowtop_optsObj,gallery:gallery_optsObj,amountOfSymbols:'',btnText:'',isHorizOnMob:false,itemsAnim:'',datePosPs:'afterdescr',partsPosPs:'afterdescr',imagePosPs:'beforetitle',datePos:'beforetitle',partsPos:'beforetitle',imagePos:'beforetitle'};t_onFuncLoad('t_feed_init',function() {t_feed_init('984737861',options);});});</script> </div> <div id="rec984737871" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <style>
#rec928256836 div{
left: 0 !important;
right: 0 !important;
float: none !important;
}
#rec928256836 .t-container_100.t014{
max-width: 1160px;
margin: 0 auto;
}
@media screen and (max-width: 1200px) {
#rec928256836 .t-container_100.t014{
max-width: 960px;
}
#rec928256836 .t-container_100.t014 .ya-share2__container{
margin: 0px 10px;
}
}
@media screen and (max-width: 960px) {
#rec928256836 .t-container_100.t014{
max-width: 640px;
}
#rec928256836 .t-container_100.t014 .ya-share2__container{
margin: 0px;
padding: 0px 20px;
}
}
</style> <!-- nominify end --> </div> </div> </div> </div> <div id="rec984737876" class="r t-rec" style=" " data-animationappear="off" data-record-type="890"> <!-- t890 --> <div class="t890"> <button type="button"
class="t890__arrow
aria-label="Вернуться к началу страницы"
style="box-shadow:0px 0px 10px rgba(0,0,0,0.2);"> <svg role="presentation" width="50" height="50" fill="none" xmlns="http://www.w3.org/2000/svg"> <rect width="50" height="50" rx="50" fill="#ffffff" fill-opacity="0.90" stroke="none" /> <path d="M14 28L25 18l10 10" stroke="#000000" stroke-width="1" fill="none"/> </svg> </button> </div> <style>#rec984737876 .t890{left:20px;right:unset;bottom:70px;}</style> <script type="text/javascript">t_onReady(function() {t_onFuncLoad('t890_init',function() {t890_init('984737876','');});});</script> <style>@media screen and (min-width:981px){#rec984737876 .t890__arrow:hover svg path{stroke:#ffffff;stroke-width:1;}#rec984737876 .t890__arrow:focus-visible svg path{stroke:#ffffff;stroke-width:1;}#rec984737876 .t890__arrow:hover svg rect{fill:#1c59ff;fill-opacity:1;}#rec984737876 .t890__arrow:focus-visible svg rect{fill:#1c59ff;fill-opacity:1;}}#rec984737876 .t890__arrow{border-radius:53px;}</style> </div> <div id="rec984737881" class="r t-rec" style=" " data-record-type="270"> <div class="t270"></div> <script>t_onReady(function() {var hash=window.location.hash;t_onFuncLoad('t270_scroll',function() {t270_scroll(hash,-3);});setTimeout(function() {var curPath=window.location.pathname;var curFullPath=window.location.origin + curPath;var recs=document.querySelectorAll('.r');Array.prototype.forEach.call(recs,function(rec) {var selects='a[href^="#"]:not([href="#"]):not(.carousel-control):not(.t-carousel__control):not([href^="#price"]):not([href^="#submenu"]):not([href^="#popup"]):not([href*="#zeropopup"]):not([href*="#closepopup"]):not([href*="#closeallpopup"]):not([href^="#prodpopup"]):not([href^="#order"]):not([href^="#!"]):not([target="_blank"]),' +
'a[href^="' + curPath + '#"]:not([href*="#!/tfeeds/"]):not([href*="#!/tproduct/"]):not([href*="#!/tab/"]):not([href*="#popup"]):not([href*="#zeropopup"]):not([href*="#closepopup"]):not([href*="#closeallpopup"]):not([target="_blank"]),' +
'a[href^="' + curFullPath + '#"]:not([href*="#!/tfeeds/"]):not([href*="#!/tproduct/"]):not([href*="#!/tab/"]):not([href*="#popup"]):not([href*="#zeropopup"]):not([href*="#closepopup"]):not([href*="#closeallpopup"]):not([target="_blank"])';var elements=rec.querySelectorAll(selects);Array.prototype.forEach.call(elements,function(element) {element.addEventListener('click',function(event) {event.preventDefault();var hash=this.hash.trim();t_onFuncLoad('t270_scroll',function() {t270_scroll(hash,-3);});});});});if(document.querySelectorAll('.js-store').length>0||document.querySelectorAll('.js-feed').length>0) {t_onFuncLoad('t270_scroll',function() {t270_scroll(hash,-3,1);});}},500);setTimeout(function() {var hash=window.location.hash;if(hash&&document.querySelectorAll('a[name="' + hash.slice(1) + '"], div[id="' + hash.slice(1) + '"]').length>0) {if(window.isMobile) {t_onFuncLoad('t270_scroll',function() {t270_scroll(hash,0);});} else {t_onFuncLoad('t270_scroll',function() {t270_scroll(hash,0);});}}},1000);window.addEventListener('popstate',function() {var hash=window.location.hash;if(hash&&document.querySelectorAll('a[name="' + hash.slice(1) + '"], div[id="' + hash.slice(1) + '"]').length>0) {if(window.isMobile) {t_onFuncLoad('t270_scroll',function() {t270_scroll(hash,0);});} else {t_onFuncLoad('t270_scroll',function() {t270_scroll(hash,0);});}}});});</script> </div> <!--footer--> <footer id="t-footer" class="t-records" data-hook="blocks-collection-content-node" data-tilda-project-id="705564" data-tilda-page-id="13176281" data-tilda-page-alias="footer" data-tilda-formskey="59b517bfad01153865a4875be1bdd366" data-tilda-stat-scroll="yes" data-tilda-lazy="yes" data-tilda-root-zone="com" data-tilda-project-headcode="yes" data-tilda-ts="y" data-tilda-project-country="RU"> <div id="rec1684307921" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <script>
$('.example-3 .tn-atom').on('click', function () {
var $temp = $('<input>');
$('body').append($temp);
$temp.val($(this).text()).select();
document.execCommand('copy');
$temp.remove();
$(this).text('Скопирован!');
});
</script> <style>
.example-3 { cursor: pointer; }
</style> <!-- nominify end --> </div> </div> </div> </div> <div id="rec480081308" class="r t-rec uc-cookie-block" style=" " data-animationappear="off" data-record-type="121" data-alias-record-type="886"> <!-- T886 --> <div class="t886 t886_closed" data-storage-item="t886cookiename_705564" style=""> <div class="t886__wrapper" style="background-color:#ffffff; width:800px;"> <div class="t886__text t-text t-text_xs t-valign_middle" field="text">На сайте мы используем cookie. Без них несладко.</div> <div
class="t-btn t-btnflex t-btnflex_type_button t-btnflex_sm t886__btn"
type="button"><span class="t-btnflex__text">Хорошо</span> <style>#rec480081308 .t-btnflex.t-btnflex_type_button {color:#ffffff;background-color:#000000;--border-width:0px;border-style:none !important;border-radius:5px;box-shadow:none !important;font-weight:400;transition-duration:0.2s;transition-property:background-color,color,border-color,box-shadow,opacity,transform,gap;transition-timing-function:ease-in-out;}@media (hover:hover) {#rec480081308 .t-btnflex.t-btnflex_type_button:not(.t-animate_no-hover):hover {color:#ffffff !important;background-color:#170f63 !important;}#rec480081308 .t-btnflex.t-btnflex_type_button:not(.t-animate_no-hover):focus-visible {color:#ffffff !important;background-color:#170f63 !important;}}</style></div> </div> </div> <script type="text/javascript">t_onReady(function() {t_onFuncLoad('t886_init',function() {t886_init('480081308');});});</script> <style>#rec480081308 .t886__text{text-align:left;}</style> <style> #rec480081308 .t886__text{font-size:14px;line-height:1;color:#000000;}</style> <style> #rec480081308 .t886__wrapper{border-radius:5px;}</style> </div> <div id="rec495453579" class="r t-rec uc-footer--type0" style=" " data-animationappear="off" data-record-type="121" data-alias-record-type="396"> <!-- T396 --> <style>#rec495453579 .t396__artboard {height:847px;background-color:#ffffff;}#rec495453579 .t396__filter {height:847px;}#rec495453579 .t396__carrier{height:847px;background-position:center center;background-attachment:scroll;background-size:cover;background-repeat:no-repeat;}@media screen and (max-width:1199px) {#rec495453579 .t396__artboard,#rec495453579 .t396__filter,#rec495453579 .t396__carrier {height:840px;}#rec495453579 .t396__filter {}#rec495453579 .t396__carrier {background-attachment:scroll;}}@media screen and (max-width:959px) {#rec495453579 .t396__artboard,#rec495453579 .t396__filter,#rec495453579 .t396__carrier {height:1196px;}#rec495453579 .t396__filter {}#rec495453579 .t396__carrier {background-attachment:scroll;}}@media screen and (max-width:639px) {#rec495453579 .t396__artboard,#rec495453579 .t396__filter,#rec495453579 .t396__carrier {height:1513px;}#rec495453579 .t396__filter {}#rec495453579 .t396__carrier {background-attachment:scroll;}}@media screen and (max-width:479px) {#rec495453579 .t396__artboard,#rec495453579 .t396__filter,#rec495453579 .t396__carrier {height:1536px;}#rec495453579 .t396__filter {}#rec495453579 .t396__carrier {background-attachment:scroll;}}#rec495453579 .tn-elem[data-elem-id="1712236782477"]{z-index:3;top:74px;;left:calc(50% - 600px + 20px);;width:105px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1712236782477"] .tn-atom{border-radius:0px 0px 0px 0px;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}#rec495453579 .tn-elem[data-elem-id="1712236782477"] .tn-atom__img{border-radius:0px 0px 0px 0px;object-position:center center;}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1712236782477"]{display:table;left:calc(50% - 480px + 36px);;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1712236782477"]{display:table;top:61px;;left:calc(50% - 320px + 24px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1712236782477"]{display:table;top:40pxpx;;left:calc(50% - 240px + 15px);;width:105px;height:auto;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1712236782477"]{display:table;top:36px;;left:calc(50% - 160px + 7px);;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1712235605947"]{z-index:3;top:74px;;left:calc(50% - 600px + 20px);;width:105px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1712235605947"] .tn-atom{border-radius:0px 0px 0px 0px;opacity:0;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}#rec495453579 .tn-elem[data-elem-id="1712235605947"] .tn-atom__img{border-radius:0px 0px 0px 0px;object-position:center center;}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1712235605947"]{display:table;left:calc(50% - 480px + 36px);;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1712235605947"]{display:table;top:61px;;left:calc(50% - 320px + 24px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1712235605947"]{display:table;top:40px;;left:calc(50% - 240px + 15px);;width:105px;height:auto;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1712235605947"]{display:table;top:36px;;left:calc(50% - 160px + 7px);;height:auto;}#rec495453579 .tn-elem[data-elem-id="1712235605947"] .tn-atom{background-size:cover;opacity:0;}}#rec495453579 .tn-elem[data-elem-id="1692506348245"]{z-index:3;top:58px;;left:calc(50% - 600px + 820px);;width:120px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1692506348245"] .tn-atom{border-radius:0px 0px 0px 0px;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}#rec495453579 .tn-elem[data-elem-id="1692506348245"] .tn-atom__img{border-radius:0px 0px 0px 0px;object-position:center center;}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1692506348245"]{display:table;left:calc(50% - 480px + 640px);;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1692506348245"]{display:table;top:755px;;left:calc(50% - 320px + 24px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1692506348245"]{display:table;top:835px;;left:calc(50% - 240px + 20px);;height:auto;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1692506348245"]{display:table;top:863px;;left:calc(50% - 160px + 10px);;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1692506631214"]{z-index:3;top:58px;;left:calc(50% - 600px + 820px);;width:120px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1692506631214"] .tn-atom{border-radius:0px 0px 0px 0px;opacity:0;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}#rec495453579 .tn-elem[data-elem-id="1692506631214"] .tn-atom__img{border-radius:0px 0px 0px 0px;object-position:center center;}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1692506631214"]{display:table;left:calc(50% - 480px + 640px);;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1692506631214"]{display:table;top:757px;;left:calc(50% - 320px + 24px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1692506631214"]{display:table;top:845px;;left:calc(50% - 240px + 20px);;height:auto;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1692506631214"]{display:table;top:873px;;left:calc(50% - 160px + 10px);;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1660327289504"]{color:#8999a9;z-index:3;top:121px;;left:calc(50% - 600px + 20px);;width:360px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660327289504"] .tn-atom{vertical-align:middle;color:#8999a9;font-size:18px;font-family:var(--t-text-font,Arial);line-height:1.33;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660327289504"]{display:table;left:calc(50% - 480px + 32px);;width:288px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660327289504"]{display:table;top:68px;;left:calc(50% - 320px + 153px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660327289504"]{display:table;top:81px;;left:calc(50% - 240px + 20px);;height:auto;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660327289504"]{display:table;left:calc(50% - 160px + 10px);;width:300px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660327289504"] .tn-atom{font-size:16px;line-height:1.5;background-size:cover;}}#rec495453579 .tn-elem[data-elem-id="1660327420094"]{color:#172b4d;z-index:3;top:185px;;left:calc(50% - 600px + 14px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660327420094"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:24px;font-family:var(--t-text-font,Arial);line-height:1.08;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660327420094"]{display:table;left:calc(50% - 480px + 27px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660327420094"]{display:table;top:124px;;left:calc(50% - 320px + 20px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660327420094"]{display:table;left:calc(50% - 240px + 15px);;width:440px;height:auto;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660327420094"]{display:table;left:calc(50% - 160px + 5px);;width:300px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1660327526179"]{color:#172b4d;z-index:3;top:223px;;left:calc(50% - 600px + 16px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660327526179"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:24px;font-family:var(--t-text-font,Arial);line-height:1.08;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660327526179"]{display:table;left:calc(50% - 480px + 28px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660327526179"]{display:table;top:162px;;left:calc(50% - 320px + 20px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660327526179"]{display:table;left:calc(50% - 240px + 16px);;width:440px;height:auto;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660327526179"]{display:table;left:calc(50% - 160px + 6px);;width:300px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1660328247771"]{color:#172b4d;z-index:3;top:547px;;left:calc(50% - 600px + 419px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328247771"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660328247771"]{display:table;top:557px;;left:calc(50% - 480px + 332px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660328247771"]{display:table;top:532px;;left:calc(50% - 320px + 326px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660328247771"]{display:table;top:622px;;left:calc(50% - 240px + 16px);;width:440px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328247771"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660328247771"]{display:table;top:614px;;left:calc(50% - 160px + 6px);;width:300px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1660328067115"]{color:#172b4d;z-index:3;top:217px;;left:calc(50% - 600px + 419px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328067115"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660328067115"]{display:table;top:219px;;left:calc(50% - 480px + 332px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660328067115"]{display:table;top:158px;;left:calc(50% - 320px + 326px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660328067115"]{display:table;top:258px;;left:calc(50% - 240px + 244px);;width:212px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328067115"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660328067115"]{display:table;top:258px;;left:calc(50% - 160px + 166px);;width:140px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1660328673693"]{color:#172b4d;z-index:3;top:229px;;left:calc(50% - 600px + 816px);;width:360px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328673693"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660328673693"]{display:table;top:229px;;left:calc(50% - 480px + 636px);;width:288px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660328673693"]{display:table;top:874px;;left:calc(50% - 320px + 20px);;width:256px;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660328673693"]{display:table;top:1008px;;left:calc(50% - 240px + 20px);;width:440px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328673693"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660328673693"]{display:table;top:1017px;;left:calc(50% - 160px + 9px);;width:300px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1660327820270"]{color:#172b4d;z-index:3;top:305px;;left:calc(50% - 600px + 16px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660327820270"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660327820270"]{display:table;top:315px;;left:calc(50% - 480px + 28px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660327820270"]{display:table;top:246px;;left:calc(50% - 320px + 20px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660327820270"]{display:table;top:258px;;left:calc(50% - 240px + 16px);;width:212px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660327820270"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660327820270"]{display:table;left:calc(50% - 160px + 6px);;width:140px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1660728009618"]{color:#172b4d;z-index:3;top:273px;;left:calc(50% - 600px + 16px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660728009618"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660728009618"]{display:table;top:281px;;left:calc(50% - 480px + 28px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660728009618"]{display:table;top:212px;;left:calc(50% - 320px + 20px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660728009618"]{display:table;top:220px;;left:calc(50% - 240px + 16px);;width:212px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660728009618"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660728009618"]{display:table;left:calc(50% - 160px + 6px);;width:140px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1660728533851"]{color:#ff8888;z-index:3;top:274px;;left:calc(50% - 600px + 8px);;width:9px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660728533851"] .tn-atom{vertical-align:middle;color:#ff8888;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660728533851"]{display:table;top:283px;;left:calc(50% - 480px + 20px);;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660728533851"]{display:table;top:211px;;left:calc(50% - 320px + 10px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660728533851"]{display:table;top:222px;;left:calc(50% - 240px + 8px);;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660728533851"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660728533851"]{display:table;top:218px;;left:calc(50% - 160px + 0px);;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1660328247775"]{color:#172b4d;z-index:3;top:579px;;left:calc(50% - 600px + 419px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328247775"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660328247775"]{display:table;top:591px;;left:calc(50% - 480px + 332px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660328247775"]{display:table;top:566px;;left:calc(50% - 320px + 326px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660328247775"]{display:table;top:660px;;left:calc(50% - 240px + 16px);;width:440px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328247775"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660328247775"]{display:table;top:652px;;left:calc(50% - 160px + 6px);;width:300px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1660328067118"]{color:#172b4d;z-index:3;top:185px;;left:calc(50% - 600px + 419px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328067118"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660328067118"]{display:table;top:185px;;left:calc(50% - 480px + 332px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660328067118"]{display:table;top:124px;;left:calc(50% - 320px + 326px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660328067118"]{display:table;top:220px;;left:calc(50% - 240px + 244px);;width:212px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328067118"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660328067118"]{display:table;top:220px;;left:calc(50% - 160px + 166px);;width:140px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1660328247777"]{color:#172b4d;z-index:3;top:611px;;left:calc(50% - 600px + 419px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328247777"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660328247777"]{display:table;top:625px;;left:calc(50% - 480px + 332px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660328247777"]{display:table;top:600px;;left:calc(50% - 320px + 326px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660328247777"]{display:table;top:698px;;left:calc(50% - 240px + 16px);;width:440px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328247777"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660328247777"]{display:table;top:690px;;left:calc(50% - 160px + 6px);;width:300px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1660328067120"]{color:#172b4d;z-index:3;top:249px;;left:calc(50% - 600px + 419px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328067120"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660328067120"]{display:table;top:253px;;left:calc(50% - 480px + 332px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660328067120"]{display:table;top:192px;;left:calc(50% - 320px + 326px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660328067120"]{display:table;top:296px;;left:calc(50% - 240px + 244px);;width:212px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328067120"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660328067120"]{display:table;top:296px;;left:calc(50% - 160px + 166px);;width:140px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328067120"] .tn-atom{line-height:1.2;background-size:cover;}}#rec495453579 .tn-elem[data-elem-id="1660327823456"]{color:#172b4d;z-index:3;top:337px;;left:calc(50% - 600px + 16px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660327823456"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660327823456"]{display:table;top:349px;;left:calc(50% - 480px + 28px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660327823456"]{display:table;top:280px;;left:calc(50% - 320px + 20px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660327823456"]{display:table;top:296px;;left:calc(50% - 240px + 16px);;width:212px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660327823456"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660327823456"]{display:table;left:calc(50% - 160px + 6px);;width:140px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1660328067122"]{color:#172b4d;z-index:3;top:281px;;left:calc(50% - 600px + 419px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328067122"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660328067122"]{display:table;top:287px;;left:calc(50% - 480px + 332px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660328067122"]{display:table;top:226px;;left:calc(50% - 320px + 326px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660328067122"]{display:table;top:334px;;left:calc(50% - 240px + 244px);;width:212px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328067122"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660328067122"]{display:table;top:344px;;left:calc(50% - 160px + 166px);;width:140px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1664355590156"]{color:#172b4d;z-index:3;top:313px;;left:calc(50% - 600px + 419px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1664355590156"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1664355590156"]{display:table;top:321px;;left:calc(50% - 480px + 332px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1664355590156"]{display:table;top:260px;;left:calc(50% - 320px + 326px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1664355590156"]{display:table;top:372px;;left:calc(50% - 240px + 244px);;width:212px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1664355590156"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1664355590156"]{display:table;top:382px;;left:calc(50% - 160px + 166px);;width:140px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1738909171549"]{color:#172b4d;z-index:3;top:345px;;left:calc(50% - 600px + 419px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1738909171549"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1738909171549"]{display:table;top:355px;;left:calc(50% - 480px + 332px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1738909171549"]{display:table;top:294px;;left:calc(50% - 320px + 326px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1738909171549"]{display:table;top:410px;;left:calc(50% - 240px + 244px);;width:212px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1738909171549"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1738909171549"]{display:table;top:420px;;left:calc(50% - 160px + 166px);;width:140px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1660328170303"]{color:#8999a9;z-index:3;top:503px;;left:calc(50% - 600px + 419px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328170303"] .tn-atom{vertical-align:middle;color:#8999a9;font-size:18px;font-family:var(--t-text-font,Arial);line-height:1.33;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660328170303"]{display:table;top:513px;;left:calc(50% - 480px + 332px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660328170303"]{display:table;top:488px;;left:calc(50% - 320px + 326px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660328170303"]{display:table;top:578px;;left:calc(50% - 240px + 16px);;width:440px;height:auto;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660328170303"]{display:table;top:570px;;left:calc(50% - 160px + 9px);;width:300px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328170303"] .tn-atom{font-size:16px;line-height:1.5;background-size:cover;}}#rec495453579 .tn-elem[data-elem-id="1660328581896"]{color:#8999a9;z-index:3;top:185px;;left:calc(50% - 600px + 820px);;width:360px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328581896"] .tn-atom{vertical-align:middle;color:#8999a9;font-size:18px;font-family:var(--t-text-font,Arial);line-height:1.33;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660328581896"]{display:table;left:calc(50% - 480px + 640px);;width:288px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660328581896"]{display:table;top:830px;;left:calc(50% - 320px + 24px);;width:288px;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660328581896"]{display:table;top:964px;;left:calc(50% - 240px + 20px);;width:440px;height:auto;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660328581896"]{display:table;top:973px;;left:calc(50% - 160px + 12px);;width:300px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328581896"] .tn-atom{font-size:16px;line-height:1.5;background-size:cover;}}#rec495453579 .tn-elem[data-elem-id="1660328396738"]{color:#8999a9;z-index:3;top:736px;;left:calc(50% - 600px + 20px);;width:360px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328396738"] .tn-atom{vertical-align:middle;color:#8999a9;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660328396738"]{display:table;top:765px;;left:calc(50% - 480px + 32px);;width:288px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660328396738"]{display:table;top:1125px;;left:calc(50% - 320px + 24px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660328396738"]{display:table;top:1435px;;left:calc(50% - 240px + 23px);;height:auto;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660328396738"]{display:table;top:1428px;;left:calc(50% - 160px + 9px);;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1660327824923"]{color:#172b4d;z-index:3;top:401px;;left:calc(50% - 600px + 16px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660327824923"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660327824923"]{display:table;top:417px;;left:calc(50% - 480px + 28px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660327824923"]{display:table;top:348px;;left:calc(50% - 320px + 20px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660327824923"]{display:table;top:372px;;left:calc(50% - 240px + 16px);;width:212px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660327824923"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660327824923"]{display:table;left:calc(50% - 160px + 6px);;width:140px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1660327826356"]{color:#172b4d;z-index:3;top:369px;;left:calc(50% - 600px + 16px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660327826356"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660327826356"]{display:table;top:383px;;left:calc(50% - 480px + 28px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660327826356"]{display:table;top:314px;;left:calc(50% - 320px + 20px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660327826356"]{display:table;top:334px;;left:calc(50% - 240px + 16px);;width:212px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660327826356"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660327826356"]{display:table;left:calc(50% - 160px + 6px);;width:140px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1660327833780"]{color:#172b4d;z-index:3;top:433px;;left:calc(50% - 600px + 16px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660327833780"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660327833780"]{display:table;top:451px;;left:calc(50% - 480px + 28px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660327833780"]{display:table;top:382px;;left:calc(50% - 320px + 20px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660327833780"]{display:table;top:410px;;left:calc(50% - 240px + 16px);;width:212px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660327833780"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660327833780"]{display:table;left:calc(50% - 160px + 6px);;width:140px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1660327835132"]{color:#172b4d;z-index:3;top:497px;;left:calc(50% - 600px + 16px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660327835132"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660327835132"]{display:table;top:519px;;left:calc(50% - 480px + 28px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660327835132"]{display:table;top:450px;;left:calc(50% - 320px + 20px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660327835132"]{display:table;top:486px;;left:calc(50% - 240px + 16px);;width:212px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660327835132"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660327835132"]{display:table;left:calc(50% - 160px + 6px);;width:140px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1695983077804"]{color:#172b4d;z-index:3;top:586px;;left:calc(50% - 600px + 16px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1695983077804"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1695983077804"]{display:table;top:619px;;left:calc(50% - 480px + 28px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1695983077804"]{display:table;top:590px;;left:calc(50% - 320px + 20px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1695983077804"]{display:table;top:1265px;;left:calc(50% - 240px + 19px);;width:440px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1695983077804"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1695983077804"]{display:table;top:1268px;;left:calc(50% - 160px + 9px);;width:300px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1660328020471"]{color:#172b4d;z-index:3;top:618px;;left:calc(50% - 600px + 16px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328020471"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660328020471"]{display:table;top:653px;;left:calc(50% - 480px + 28px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660328020471"]{display:table;top:624px;;left:calc(50% - 320px + 20px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660328020471"]{display:table;top:1303px;;left:calc(50% - 240px + 19px);;width:440px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328020471"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660328020471"]{display:table;top:1306px;;left:calc(50% - 160px + 9px);;width:300px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1660327366231"]{color:#8999a9;z-index:3;top:121px;;left:calc(50% - 600px + 820px);;width:360px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660327366231"] .tn-atom{vertical-align:middle;color:#8999a9;font-size:18px;font-family:var(--t-text-font,Arial);line-height:1.33;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660327366231"]{display:table;left:calc(50% - 480px + 640px);;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660327366231"] .tn-atom{background-size:cover;opacity:1;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660327366231"]{display:table;top:784px;;left:calc(50% - 320px + 168px);;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660327366231"] .tn-atom{background-size:cover;opacity:1;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660327366231"]{display:table;top:908px;;left:calc(50% - 240px + 20px);;width:440px;height:auto;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660327366231"]{display:table;top:925px;;left:calc(50% - 160px + 10px);;width:300px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660327366231"] .tn-atom{font-size:16px;line-height:1.5;background-size:cover;}}#rec495453579 .tn-elem[data-elem-id="1660723679978"]{z-index:3;top:0px;;left:calc(50% - 600px + 787px);;width:1px;height:100%;}#rec495453579 .tn-elem[data-elem-id="1660723679978"] .tn-atom{border-radius:0px 0px 0px 0px;background-color:#d0d6dd;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660723679978"]{display:table;left:calc(50% - 480px + 619px);;height:100%;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660723679978"]{display:table;}#rec495453579 .tn-elem[data-elem-id="1660723679978"] .tn-atom{background-size:cover;opacity:0;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660723679978"]{display:table;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660723679978"]{display:table;}}#rec495453579 .tn-elem[data-elem-id="1660625517826"]{z-index:3;top:0px;;left:calc(50% - 600px + 0px);;width:592px;height:1px;}#rec495453579 .tn-elem[data-elem-id="1660625517826"] .tn-atom{border-radius:0px 0px 0px 0px;opacity:0;background-color:#d0d6dd;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660625517826"]{display:table;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660625517826"]{display:table;top:743px;;left:calc(50% - 320px + 24px);;}#rec495453579 .tn-elem[data-elem-id="1660625517826"] .tn-atom{background-size:cover;opacity:1;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660625517826"]{display:table;top:782px;;left:calc(50% - 240px + 20px);;width:440px;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660625517826"]{display:table;top:770px;;left:calc(50% - 160px + 10px);;width:300px;}}#rec495453579 .tn-elem[data-elem-id="1660625579543"]{z-index:3;top:0px;;left:calc(50% - 600px + 0px);;width:592px;height:1px;}#rec495453579 .tn-elem[data-elem-id="1660625579543"] .tn-atom{border-radius:0px 0px 0px 0px;opacity:0;background-color:#d0d6dd;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660625579543"]{display:table;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660625579543"]{display:table;top:1060px;;left:calc(50% - 320px + 24px);;}#rec495453579 .tn-elem[data-elem-id="1660625579543"] .tn-atom{background-size:cover;opacity:1;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660625579543"]{display:table;top:1204px;;left:calc(50% - 240px + 20px);;width:440px;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660625579543"]{display:table;top:1215px;;left:calc(50% - 160px + 9px);;width:300px;}}#rec495453579 .tn-elem[data-elem-id="1660723501956"]{z-index:3;top:0px;;left:calc(50% - 50% + 0px);;width:100%;height:1px;}#rec495453579 .tn-elem[data-elem-id="1660723501956"] .tn-atom{border-radius:0px 0px 0px 0px;background-color:#d0d6dd;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660723501956"]{display:table;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660723501956"]{display:table;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660723501956"]{display:table;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660723501956"]{display:table;}}#rec495453579 .tn-elem[data-elem-id="1660328018624"]{color:#172b4d;z-index:3;top:553px;;left:calc(50% - 600px + 16px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328018624"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1660328018624"]{display:table;top:585px;;left:calc(50% - 480px + 28px);;width:278px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1660328018624"]{display:table;top:556px;;left:calc(50% - 320px + 20px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1660328018624"]{display:table;top:1227px;;left:calc(50% - 240px + 19px);;width:440px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1660328018624"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1660328018624"]{display:table;top:1230px;;left:calc(50% - 160px + 9px);;width:300px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1705327730563"]{z-index:3;top:calc(847px - 101px + 3px);;left:calc(50% - 3% + -3px);;width:6%;height:auto;}#rec495453579 .tn-elem[data-elem-id="1705327730563"] .tn-atom{border-radius:0px 0px 0px 0px;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}#rec495453579 .tn-elem[data-elem-id="1705327730563"] .tn-atom__img{border-radius:0px 0px 0px 0px;object-position:center center;}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1705327730563"]{display:table;top:calc(847px - 101px + 4px);;left:calc(50% - 3% + 2px);;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1705327730563"]{display:table;top:calc(847px - 101px + -112px);;left:calc(50% - 3% + 173px);;width:94px;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1705327730563"]{display:table;top:calc(847px - 101px + 57px);;left:calc(50% - 3% + 147px);;width:100px;height:auto;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1705327730563"]{display:table;top:calc(847px - 101px + 25px);;left:calc(50% - 3% + 1px);;width:71%;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1706690444440"]{color:#172b4d;z-index:3;top:377px;;left:calc(50% - 600px + 419px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1706690444440"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1706690444440"]{display:table;top:389px;;left:calc(50% - 480px + 332px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1706690444440"]{display:table;top:328px;;left:calc(50% - 320px + 326px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1706690444440"]{display:table;top:448px;;left:calc(50% - 240px + 244px);;width:212px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1706690444440"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1706690444440"]{display:table;top:458px;;left:calc(50% - 160px + 166px);;width:140px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1707905565159"]{color:#172b4d;z-index:3;top:441px;;left:calc(50% - 600px + 420px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1707905565159"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1707905565159"]{display:table;top:457px;;left:calc(50% - 480px + 332px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1707905565159"]{display:table;top:396px;;left:calc(50% - 320px + 326px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1707905565159"]{display:table;top:524px;;left:calc(50% - 240px + 244px);;width:212px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1707905565159"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1707905565159"]{display:table;top:532px;;left:calc(50% - 160px + 166px);;width:140px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1742980584483"]{color:#172b4d;z-index:3;top:409px;;left:calc(50% - 600px + 419px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1742980584483"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1742980584483"]{display:table;top:423px;;left:calc(50% - 480px + 332px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1742980584483"]{display:table;top:362px;;left:calc(50% - 320px + 326px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1742980584483"]{display:table;top:486px;;left:calc(50% - 240px + 244px);;width:212px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1742980584483"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1742980584483"]{display:table;top:496px;;left:calc(50% - 160px + 166px);;width:140px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1708962345240"]{color:#172b4d;z-index:3;top:682px;;left:calc(50% - 600px + 16px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1708962345240"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1708962345240"]{display:table;top:721px;;left:calc(50% - 480px + 28px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1708962345240"]{display:table;top:692px;;left:calc(50% - 320px + 20px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1708962345240"]{display:table;top:1379px;;left:calc(50% - 240px + 19px);;width:440px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1708962345240"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1708962345240"]{display:table;top:1382px;;left:calc(50% - 160px + 9px);;width:300px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1742566995756"]{color:#172b4d;z-index:3;top:650px;;left:calc(50% - 600px + 16px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1742566995756"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1742566995756"]{display:table;top:687px;;left:calc(50% - 480px + 28px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1742566995756"]{display:table;top:658px;;left:calc(50% - 320px + 20px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1742566995756"]{display:table;top:1341px;;left:calc(50% - 240px + 19px);;width:440px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1742566995756"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1742566995756"]{display:table;top:1344px;;left:calc(50% - 160px + 9px);;width:300px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1723122768750"]{color:#172b4d;z-index:3;top:373px;;left:calc(50% - 600px + 886px);;width:360px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1723122768750"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1723122768750"]{display:table;top:409px;;left:calc(50% - 480px + 709px);;width:215px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1723122768750"]{display:table;top:973px;;left:calc(50% - 320px + 89px);;width:330px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1723122768750"] .tn-atom{vertical-align:middle;white-space:normal;background-size:cover;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1723122768750"]{display:table;top:1128px;;left:calc(50% - 240px + 71px);;width:440px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1723122768750"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1723122768750"]{display:table;top:793px;;left:calc(50% - 160px + 57px);;width:300px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1768398747383000001"]{color:#172b4d;z-index:3;top:297px;;left:calc(50% - 600px + 816px);;width:360px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1768398747383000001"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1768398747383000001"]{display:table;top:317px;;left:calc(50% - 480px + 636px);;width:288px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1768398747383000001"]{display:table;top:874px;;left:calc(50% - 320px + 328px);;width:273px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1768398747383000001"] .tn-atom{vertical-align:middle;white-space:normal;background-size:cover;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1768398747383000001"]{display:table;top:1068px;;left:calc(50% - 240px + 20px);;width:335px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1768398747383000001"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1768398747383000001"]{display:table;top:1099px;;left:calc(50% - 160px + 9px);;width:300px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1726735717183"]{color:#172b4d;z-index:3;top:465px;;left:calc(50% - 600px + 16px);;width:336px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1726735717183"] .tn-atom{vertical-align:middle;color:#172b4d;font-size:16px;font-family:var(--t-text-font,Arial);line-height:1.5;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-shadow-text-opacity:100%;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1726735717183"]{display:table;top:485px;;left:calc(50% - 480px + 28px);;width:264px;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1726735717183"]{display:table;top:416px;;left:calc(50% - 320px + 20px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1726735717183"]{display:table;top:448px;;left:calc(50% - 240px + 16px);;width:212px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1726735717183"] .tn-atom{font-size:15px;line-height:1.47;background-size:cover;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1726735717183"]{display:table;left:calc(50% - 160px + 6px);;width:140px;height:auto;}}#rec495453579 .tn-elem[data-elem-id="1768399150632"]{z-index:3;top:369px;;left:calc(50% - 600px + 820px);;width:55px;height:55px;}#rec495453579 .tn-elem[data-elem-id="1768399150632"] .tn-atom{border-radius:10px 10px 10px 10px;background-color:#172b4d;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1768399150632"]{display:table;top:417px;;left:calc(50% - 480px + 640px);;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1768399150632"]{display:table;top:968px;;left:calc(50% - 320px + 24px);;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1768399150632"]{display:table;top:1129px;;left:calc(50% - 240px + 21px);;width:41px;height:41px;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1768399150632"]{display:table;top:794px;;left:calc(50% - 160px + 10px);;}}#rec495453579 .tn-elem[data-elem-id="1768399141699"]{z-index:3;top:378px;;left:calc(50% - 600px + 829px);;width:38px;height:auto;}#rec495453579 .tn-elem[data-elem-id="1768399141699"] .tn-atom{border-radius:0px 0px 0px 0px;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}#rec495453579 .tn-elem[data-elem-id="1768399141699"] .tn-atom__img{border-radius:0px 0px 0px 0px;object-position:center center;}@media screen and (max-width:1199px){#rec495453579 .tn-elem[data-elem-id="1768399141699"]{display:table;top:426px;;left:calc(50% - 480px + 649px);;height:auto;}}@media screen and (max-width:959px){#rec495453579 .tn-elem[data-elem-id="1768399141699"]{display:table;top:977px;;left:calc(50% - 320px + 33px);;height:auto;}}@media screen and (max-width:639px){#rec495453579 .tn-elem[data-elem-id="1768399141699"]{display:table;top:1136px;;left:calc(50% - 240px + 28px);;width:28px;height:auto;}}@media screen and (max-width:479px){#rec495453579 .tn-elem[data-elem-id="1768399141699"]{display:table;top:801px;;left:calc(50% - 160px + 17px);;height:auto;}}</style> <div class='t396'> <div class="t396__artboard" data-artboard-recid="495453579" data-artboard-screens="320,480,640,960,1200" data-artboard-height="847" data-artboard-valign="center" data-artboard-upscale="grid" data-artboard-height-res-320="1536" data-artboard-height-res-480="1513" data-artboard-height-res-640="1196" data-artboard-height-res-960="840"> <div class="t396__carrier" data-artboard-recid="495453579"></div> <div class="t396__filter" data-artboard-recid="495453579"></div> <div class='t396__elem tn-elem uc-logo--on-white tn-elem__4954535791712236782477' data-elem-id='1712236782477' data-elem-type='image' data-field-top-value="74" data-field-left-value="20" data-field-height-value="42" data-field-width-value="105" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-filewidth-value="259" data-field-fileheight-value="103" data-field-heightmode-value="hug" data-field-top-res-320-value="36" data-field-left-res-320-value="7" data-field-height-res-320-value="42" data-field-top-res-480-value="40px" data-field-left-res-480-value="15" data-field-height-res-480-value="42" data-field-width-res-480-value="105" data-field-container-res-480-value="grid" data-field-top-res-640-value="61" data-field-left-res-640-value="24" data-field-height-res-640-value="42" data-field-left-res-960-value="36" data-field-height-res-960-value="42"> <a class='tn-atom' href="https://slurm.io/"> <img class='tn-atom__img t-img' data-original='https://static.tildacdn.com/tild3630-3434-4637-b730-343538653735/slurm_logo_new_1_1.svg'
src='https://static.tildacdn.com/tild3630-3434-4637-b730-343538653735/slurm_logo_new_1_1.svg'
alt='' imgfield='tn_img_1712236782477'
/> </a> </div> <div class='t396__elem tn-elem uc-logo--on-dark tn-elem__4954535791712235605947' data-elem-id='1712235605947' data-elem-type='image' data-field-top-value="74" data-field-left-value="20" data-field-height-value="42" data-field-width-value="105" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-filewidth-value="1188" data-field-fileheight-value="471" data-field-heightmode-value="hug" data-field-top-res-320-value="36" data-field-left-res-320-value="7" data-field-height-res-320-value="42" data-field-top-res-480-value="40" data-field-left-res-480-value="15" data-field-height-res-480-value="42" data-field-width-res-480-value="105" data-field-container-res-480-value="grid" data-field-top-res-640-value="61" data-field-left-res-640-value="24" data-field-height-res-640-value="42" data-field-left-res-960-value="36" data-field-height-res-960-value="42"> <a class='tn-atom' href="https://slurm.io/"> <img class='tn-atom__img t-img' data-original='https://static.tildacdn.com/tild6135-3939-4135-b731-656566303162/white.svg'
src='https://static.tildacdn.com/tild6135-3939-4135-b731-656566303162/white.svg'
alt='' imgfield='tn_img_1712235605947'
/> </a> </div> <div class='t396__elem tn-elem uc-logo--on-white tn-elem__4954535791692506348245' data-elem-id='1692506348245' data-elem-type='image' data-field-top-value="58" data-field-left-value="820" data-field-height-value="57" data-field-width-value="120" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-filewidth-value="87" data-field-fileheight-value="41" data-field-heightmode-value="hug" data-field-top-res-320-value="863" data-field-left-res-320-value="10" data-field-height-res-320-value="57" data-field-top-res-480-value="835" data-field-left-res-480-value="20" data-field-height-res-480-value="57" data-field-top-res-640-value="755" data-field-left-res-640-value="24" data-field-height-res-640-value="57" data-field-left-res-960-value="640" data-field-height-res-960-value="57"> <a class='tn-atom js-click-zero-stat' href="https://southbridge.io/?utm_source=slurm&utm_medium=footer" rel="nofollow" data-tilda-event-name="/tilda/click/rec495453579/button1692506348245"> <img class='tn-atom__img t-img' data-original='https://static.tildacdn.com/tild6266-3163-4334-b735-323663336439/sb-logo-dark.svg'
src='https://static.tildacdn.com/tild6266-3163-4334-b735-323663336439/sb-logo-dark.svg'
alt='' imgfield='tn_img_1692506348245'
/> </a> </div> <div class='t396__elem tn-elem uc-logo--on-dark tn-elem__4954535791692506631214' data-elem-id='1692506631214' data-elem-type='image' data-field-top-value="58" data-field-left-value="820" data-field-height-value="56" data-field-width-value="120" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-filewidth-value="86" data-field-fileheight-value="40" data-field-heightmode-value="hug" data-field-top-res-320-value="873" data-field-left-res-320-value="10" data-field-height-res-320-value="56" data-field-top-res-480-value="845" data-field-left-res-480-value="20" data-field-height-res-480-value="56" data-field-top-res-640-value="757" data-field-left-res-640-value="24" data-field-height-res-640-value="56" data-field-left-res-960-value="640" data-field-height-res-960-value="56"> <a class='tn-atom js-click-zero-stat' href="https://southbridge.io/?utm_source=slurm&utm_medium=footer" rel="nofollow" data-tilda-event-name="/tilda/click/rec495453579/button1692506631214"> <img class='tn-atom__img t-img' data-original='https://static.tildacdn.com/tild3438-6232-4636-b961-366339386263/sb-logo-light.svg'
src='https://static.tildacdn.com/tild3438-6232-4636-b961-366339386263/sb-logo-light.svg'
alt='' imgfield='tn_img_1692506631214'
/> </a> </div> <div class='t396__elem tn-elem tn-elem__4954535791660327289504' data-elem-id='1660327289504' data-elem-type='text' data-field-top-value="121" data-field-left-value="20" data-field-height-value="24" data-field-width-value="360" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="18" data-field-left-res-320-value="10" data-field-width-res-320-value="300" data-field-fontsize-res-320-value="16" data-field-top-res-480-value="81" data-field-left-res-480-value="20" data-field-top-res-640-value="68" data-field-left-res-640-value="153" data-field-left-res-960-value="32" data-field-width-res-960-value="288"> <div class='tn-atom'field='tn_text_1660327289504'>Обучение ИТ-профессионалов</div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660327420094' data-elem-id='1660327420094' data-elem-type='text' data-field-top-value="185" data-field-left-value="14" data-field-height-value="26" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="24" data-field-left-res-320-value="5" data-field-width-res-320-value="300" data-field-left-res-480-value="15" data-field-width-res-480-value="440" data-field-top-res-640-value="124" data-field-left-res-640-value="20" data-field-left-res-960-value="27" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="tel:+74952480580"rel="nofollow"style="color: inherit">+7 (495) 248-05-80</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660327526179' data-elem-id='1660327526179' data-elem-type='text' data-field-top-value="223" data-field-left-value="16" data-field-height-value="26" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="24" data-field-left-res-320-value="6" data-field-width-res-320-value="300" data-field-left-res-480-value="16" data-field-width-res-480-value="440" data-field-top-res-640-value="162" data-field-left-res-640-value="20" data-field-left-res-960-value="28" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="mailto:ask@slurm.io"rel="nofollow"style="color: inherit">ask@slurm.io</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660328247771' data-elem-id='1660328247771' data-elem-type='text' data-field-top-value="547" data-field-left-value="419" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="614" data-field-left-res-320-value="6" data-field-width-res-320-value="300" data-field-top-res-480-value="622" data-field-left-res-480-value="16" data-field-width-res-480-value="440" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="532" data-field-left-res-640-value="326" data-field-top-res-960-value="557" data-field-left-res-960-value="332" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="/corporate"style="color: inherit">Корпоративное обучение</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660328067115' data-elem-id='1660328067115' data-elem-type='text' data-field-top-value="217" data-field-left-value="419" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="258" data-field-left-res-320-value="166" data-field-width-res-320-value="140" data-field-top-res-480-value="258" data-field-left-res-480-value="244" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="158" data-field-left-res-640-value="326" data-field-top-res-960-value="219" data-field-left-res-960-value="332" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="/calendar"style="color: inherit">Календарь</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu--partner tn-elem__4954535791660328673693' data-elem-id='1660328673693' data-elem-type='text' data-field-top-value="229" data-field-left-value="816" data-field-height-value="48" data-field-width-value="360" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="1017" data-field-left-res-320-value="9" data-field-width-res-320-value="300" data-field-top-res-480-value="1008" data-field-left-res-480-value="20" data-field-width-res-480-value="440" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="874" data-field-left-res-640-value="20" data-field-width-res-640-value="256" data-field-top-res-960-value="229" data-field-left-res-960-value="636" data-field-width-res-960-value="288"> <div class='tn-atom'><a href="https://southbridge.io/?utm_source=slurm&utm_medium=footer"rel="nofollow"style="color: inherit"><span style="font-weight: 700;">Southbridge.</span> DevOps-аутсорсер, поддержка высоконагруженных проектов.</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660327820270' data-elem-id='1660327820270' data-elem-type='text' data-field-top-value="305" data-field-left-value="16" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-left-res-320-value="6" data-field-width-res-320-value="140" data-field-top-res-480-value="258" data-field-left-res-480-value="16" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="246" data-field-left-res-640-value="20" data-field-top-res-960-value="315" data-field-left-res-960-value="28" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="https://habr.com/ru/companies/slurm/articles/"rel="nofollow"style="color: inherit">Хабр</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu--podcast tn-elem__4954535791660728009618' data-elem-id='1660728009618' data-elem-type='text' data-field-top-value="273" data-field-left-value="16" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-left-res-320-value="6" data-field-width-res-320-value="140" data-field-top-res-480-value="220" data-field-left-res-480-value="16" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="212" data-field-left-res-640-value="20" data-field-top-res-960-value="281" data-field-left-res-960-value="28" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="https://slurm.mave.digital/"rel="nofollow"style="color: inherit">Подкаст</a></div> </div> <div class='t396__elem tn-elem tn-elem__4954535791660728533851' data-elem-id='1660728533851' data-elem-type='text' data-field-top-value="274" data-field-left-value="8" data-field-height-value="24" data-field-width-value="9" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="218" data-field-left-res-320-value="0" data-field-top-res-480-value="222" data-field-left-res-480-value="8" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="211" data-field-left-res-640-value="10" data-field-top-res-960-value="283" data-field-left-res-960-value="20"> <div class='tn-atom'field='tn_text_1660728533851'>•</div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660328247775' data-elem-id='1660328247775' data-elem-type='text' data-field-top-value="579" data-field-left-value="419" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="652" data-field-left-res-320-value="6" data-field-width-res-320-value="300" data-field-top-res-480-value="660" data-field-left-res-480-value="16" data-field-width-res-480-value="440" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="566" data-field-left-res-640-value="326" data-field-top-res-960-value="591" data-field-left-res-960-value="332" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="/universal-tickets"style="color: inherit">Универсальные доступы</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660328067118' data-elem-id='1660328067118' data-elem-type='text' data-field-top-value="185" data-field-left-value="419" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="220" data-field-left-res-320-value="166" data-field-width-res-320-value="140" data-field-top-res-480-value="220" data-field-left-res-480-value="244" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="124" data-field-left-res-640-value="326" data-field-top-res-960-value="185" data-field-left-res-960-value="332" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="/catalog"style="color: inherit">Все курсы</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660328247777' data-elem-id='1660328247777' data-elem-type='text' data-field-top-value="611" data-field-left-value="419" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="690" data-field-left-res-320-value="6" data-field-width-res-320-value="300" data-field-top-res-480-value="698" data-field-left-res-480-value="16" data-field-width-res-480-value="440" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="600" data-field-left-res-640-value="326" data-field-top-res-960-value="625" data-field-left-res-960-value="332" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="/faq-for-oformitel"style="color: inherit">Оплата курса от компании</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660328067120' data-elem-id='1660328067120' data-elem-type='text' data-field-top-value="249" data-field-left-value="419" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="296" data-field-left-res-320-value="166" data-field-width-res-320-value="140" data-field-top-res-480-value="296" data-field-left-res-480-value="244" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="192" data-field-left-res-640-value="326" data-field-top-res-960-value="253" data-field-left-res-960-value="332" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="/free"style="color: inherit">Бесплатные материалы</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660327823456' data-elem-id='1660327823456' data-elem-type='text' data-field-top-value="337" data-field-left-value="16" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-left-res-320-value="6" data-field-width-res-320-value="140" data-field-top-res-480-value="296" data-field-left-res-480-value="16" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="280" data-field-left-res-640-value="20" data-field-top-res-960-value="349" data-field-left-res-960-value="28" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="https://t.me/slurmnews"style="color: inherit">Telegram</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660328067122' data-elem-id='1660328067122' data-elem-type='text' data-field-top-value="281" data-field-left-value="419" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="344" data-field-left-res-320-value="166" data-field-width-res-320-value="140" data-field-top-res-480-value="334" data-field-left-res-480-value="244" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="226" data-field-left-res-640-value="326" data-field-top-res-960-value="287" data-field-left-res-960-value="332" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="/speaker"style="color: inherit">Спикеры</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791664355590156' data-elem-id='1664355590156' data-elem-type='text' data-field-top-value="313" data-field-left-value="419" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="382" data-field-left-res-320-value="166" data-field-width-res-320-value="140" data-field-top-res-480-value="372" data-field-left-res-480-value="244" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="260" data-field-left-res-640-value="326" data-field-top-res-960-value="321" data-field-left-res-960-value="332" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="/for-speakers"style="color: inherit">Для спикеров</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791738909171549' data-elem-id='1738909171549' data-elem-type='text' data-field-top-value="345" data-field-left-value="419" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="420" data-field-left-res-320-value="166" data-field-width-res-320-value="140" data-field-top-res-480-value="410" data-field-left-res-480-value="244" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="294" data-field-left-res-640-value="326" data-field-top-res-960-value="355" data-field-left-res-960-value="332" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="https://slurm.io/careers"style="color: inherit">Работа в Слёрме</a></div> </div> <div class='t396__elem tn-elem tn-elem__4954535791660328170303' data-elem-id='1660328170303' data-elem-type='text' data-field-top-value="503" data-field-left-value="419" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="18" data-field-top-res-320-value="570" data-field-left-res-320-value="9" data-field-width-res-320-value="300" data-field-fontsize-res-320-value="16" data-field-top-res-480-value="578" data-field-left-res-480-value="16" data-field-width-res-480-value="440" data-field-top-res-640-value="488" data-field-left-res-640-value="326" data-field-top-res-960-value="513" data-field-left-res-960-value="332" data-field-width-res-960-value="264"> <div class='tn-atom'field='tn_text_1660328170303'>Корпоративным клиентам</div> </div> <div class='t396__elem tn-elem tn-elem__4954535791660328581896' data-elem-id='1660328581896' data-elem-type='text' data-field-top-value="185" data-field-left-value="820" data-field-height-value="24" data-field-width-value="360" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="18" data-field-top-res-320-value="973" data-field-left-res-320-value="12" data-field-width-res-320-value="300" data-field-fontsize-res-320-value="16" data-field-top-res-480-value="964" data-field-left-res-480-value="20" data-field-width-res-480-value="440" data-field-top-res-640-value="830" data-field-left-res-640-value="24" data-field-width-res-640-value="288" data-field-left-res-960-value="640" data-field-width-res-960-value="288"> <div class='tn-atom'field='tn_text_1660328581896'>Партнёры</div> </div> <div class='t396__elem tn-elem tn-elem__4954535791660328396738' data-elem-id='1660328396738' data-elem-type='text' data-field-top-value="736" data-field-left-value="20" data-field-height-value="24" data-field-width-value="360" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="1428" data-field-left-res-320-value="9" data-field-top-res-480-value="1435" data-field-left-res-480-value="23" data-field-top-res-640-value="1125" data-field-left-res-640-value="24" data-field-top-res-960-value="765" data-field-left-res-960-value="32" data-field-width-res-960-value="288"> <div class='tn-atom'field='tn_text_1660328396738'>© 2018—2025 ООО «Слёрм»</div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660327824923' data-elem-id='1660327824923' data-elem-type='text' data-field-top-value="401" data-field-left-value="16" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-left-res-320-value="6" data-field-width-res-320-value="140" data-field-top-res-480-value="372" data-field-left-res-480-value="16" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="348" data-field-left-res-640-value="20" data-field-top-res-960-value="417" data-field-left-res-960-value="28" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="https://vk.com/slurm_io"rel="nofollow"style="color: inherit">VK</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660327826356' data-elem-id='1660327826356' data-elem-type='text' data-field-top-value="369" data-field-left-value="16" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-left-res-320-value="6" data-field-width-res-320-value="140" data-field-top-res-480-value="334" data-field-left-res-480-value="16" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="314" data-field-left-res-640-value="20" data-field-top-res-960-value="383" data-field-left-res-960-value="28" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="https://www.youtube.com/c/slurm_io"rel="nofollow"style="color: inherit">YouTube</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660327833780' data-elem-id='1660327833780' data-elem-type='text' data-field-top-value="433" data-field-left-value="16" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-left-res-320-value="6" data-field-width-res-320-value="140" data-field-top-res-480-value="410" data-field-left-res-480-value="16" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="382" data-field-left-res-640-value="20" data-field-top-res-960-value="451" data-field-left-res-960-value="28" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="https://dzen.ru/slurm"rel="nofollow"style="color: inherit">Дзен</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660327835132' data-elem-id='1660327835132' data-elem-type='text' data-field-top-value="497" data-field-left-value="16" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-left-res-320-value="6" data-field-width-res-320-value="140" data-field-top-res-480-value="486" data-field-left-res-480-value="16" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="450" data-field-left-res-640-value="20" data-field-top-res-960-value="519" data-field-left-res-960-value="28" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="https://www.linkedin.com/company/slurm"rel="nofollow"style="color: inherit">LinkedIn</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791695983077804' data-elem-id='1695983077804' data-elem-type='text' data-field-top-value="586" data-field-left-value="16" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="1268" data-field-left-res-320-value="9" data-field-width-res-320-value="300" data-field-top-res-480-value="1265" data-field-left-res-480-value="19" data-field-width-res-480-value="440" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="590" data-field-left-res-640-value="20" data-field-top-res-960-value="619" data-field-left-res-960-value="28" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="/privacy"style="color: inherit">Политика конфиденциальности</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660328020471' data-elem-id='1660328020471' data-elem-type='text' data-field-top-value="618" data-field-left-value="16" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="1306" data-field-left-res-320-value="9" data-field-width-res-320-value="300" data-field-top-res-480-value="1303" data-field-left-res-480-value="19" data-field-width-res-480-value="440" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="624" data-field-left-res-640-value="20" data-field-top-res-960-value="653" data-field-left-res-960-value="28" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="/oferta-slurm"style="color: inherit">Публичная оферта</a></div> </div> <div class='t396__elem tn-elem tn-elem__4954535791660327366231' data-elem-id='1660327366231' data-elem-type='text' data-field-top-value="121" data-field-left-value="820" data-field-height-value="24" data-field-width-value="360" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="18" data-field-top-res-320-value="925" data-field-left-res-320-value="10" data-field-width-res-320-value="300" data-field-fontsize-res-320-value="16" data-field-top-res-480-value="908" data-field-left-res-480-value="20" data-field-width-res-480-value="440" data-field-top-res-640-value="784" data-field-left-res-640-value="168" data-field-left-res-960-value="640"> <div class='tn-atom'field='tn_text_1660327366231'>Генеральный партнёр Слёрм</div> </div> <div class='t396__elem tn-elem uc-footer-line tn-elem__4954535791660723679978' data-elem-id='1660723679978' data-elem-type='shape' data-field-top-value="0" data-field-left-value="787" data-field-height-value="100" data-field-width-value="1" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="%" data-field-widthunits-value="px" data-field-left-res-960-value="619" data-field-height-res-960-value="100"> <div class='tn-atom'> </div> </div> <div class='t396__elem tn-elem uc-footer-line tn-elem__4954535791660625517826' data-elem-id='1660625517826' data-elem-type='shape' data-field-top-value="0" data-field-left-value="0" data-field-height-value="1" data-field-width-value="592" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-top-res-320-value="770" data-field-left-res-320-value="10" data-field-width-res-320-value="300" data-field-top-res-480-value="782" data-field-left-res-480-value="20" data-field-width-res-480-value="440" data-field-top-res-640-value="743" data-field-left-res-640-value="24"> <div class='tn-atom'> </div> </div> <div class='t396__elem tn-elem uc-footer-line tn-elem__4954535791660625579543' data-elem-id='1660625579543' data-elem-type='shape' data-field-top-value="0" data-field-left-value="0" data-field-height-value="1" data-field-width-value="592" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-top-res-320-value="1215" data-field-left-res-320-value="9" data-field-width-res-320-value="300" data-field-top-res-480-value="1204" data-field-left-res-480-value="20" data-field-width-res-480-value="440" data-field-top-res-640-value="1060" data-field-left-res-640-value="24"> <div class='tn-atom'> </div> </div> <div class='t396__elem tn-elem uc-footer-line--top tn-elem__4954535791660723501956' data-elem-id='1660723501956' data-elem-type='shape' data-field-top-value="0" data-field-left-value="0" data-field-height-value="1" data-field-width-value="100" data-field-axisy-value="top" data-field-axisx-value="center" data-field-container-value="window" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="%"> <div class='tn-atom'> </div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660328018624' data-elem-id='1660328018624' data-elem-type='text' data-field-top-value="553" data-field-left-value="16" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="1230" data-field-left-res-320-value="9" data-field-width-res-320-value="300" data-field-top-res-480-value="1227" data-field-left-res-480-value="19" data-field-width-res-480-value="440" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="556" data-field-left-res-640-value="20" data-field-top-res-960-value="585" data-field-left-res-960-value="28" data-field-width-res-960-value="278"> <div class='tn-atom'><a href="https://api.edu.slurm.io/uploads/license_dpo.pdf"target="_blank"style="color: inherit">Лицензия №ДЛ-1368 от 22.08.2019</a></div> </div> <div class='t396__elem tn-elem tn-elem__4954535791705327730563' data-elem-id='1705327730563' data-elem-type='image' data-field-top-value="3" data-field-left-value="-3" data-field-height-value="101" data-field-width-value="6" data-field-axisy-value="bottom" data-field-axisx-value="center" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="%" data-field-filewidth-value="600" data-field-fileheight-value="840" data-field-heightmode-value="hug" data-field-top-res-320-value="25" data-field-left-res-320-value="1" data-field-height-res-320-value="99" data-field-width-res-320-value="71" data-field-top-res-480-value="57" data-field-left-res-480-value="147" data-field-height-res-480-value="140" data-field-width-res-480-value="100" data-field-widthunits-res-480-value="px" data-field-top-res-640-value="-112" data-field-left-res-640-value="173" data-field-height-res-640-value="132" data-field-width-res-640-value="94" data-field-widthunits-res-640-value="px" data-field-top-res-960-value="4" data-field-left-res-960-value="2" data-field-height-res-960-value="81"> <div class='tn-atom'> <img class='tn-atom__img t-img' data-original='https://static.tildacdn.com/tild6562-3736-4663-b362-303664366334/idle-anim3_green_lin.gif'
src='https://thb.tildacdn.com/tild6562-3736-4663-b362-303664366334/-/resize/20x/idle-anim3_green_lin.gif'
alt='' imgfield='tn_img_1705327730563'
/> </div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791706690444440' data-elem-id='1706690444440' data-elem-type='text' data-field-top-value="377" data-field-left-value="419" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="458" data-field-left-res-320-value="166" data-field-width-res-320-value="140" data-field-top-res-480-value="448" data-field-left-res-480-value="244" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="328" data-field-left-res-640-value="326" data-field-top-res-960-value="389" data-field-left-res-960-value="332" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="/reviews"style="color: inherit">Отзывы</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791707905565159' data-elem-id='1707905565159' data-elem-type='text' data-field-top-value="441" data-field-left-value="420" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="532" data-field-left-res-320-value="166" data-field-width-res-320-value="140" data-field-top-res-480-value="524" data-field-left-res-480-value="244" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="396" data-field-left-res-640-value="326" data-field-top-res-960-value="457" data-field-left-res-960-value="332" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="/blog"style="color: inherit"><strong>Блог</strong></a></div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791742980584483' data-elem-id='1742980584483' data-elem-type='text' data-field-top-value="409" data-field-left-value="419" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="496" data-field-left-res-320-value="166" data-field-width-res-320-value="140" data-field-top-res-480-value="486" data-field-left-res-480-value="244" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="362" data-field-left-res-640-value="326" data-field-top-res-960-value="423" data-field-left-res-960-value="332" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="/about_us"style="color: inherit">О нас</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791708962345240' data-elem-id='1708962345240' data-elem-type='text' data-field-top-value="682" data-field-left-value="16" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="1382" data-field-left-res-320-value="9" data-field-width-res-320-value="300" data-field-top-res-480-value="1379" data-field-left-res-480-value="19" data-field-width-res-480-value="440" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="692" data-field-left-res-640-value="20" data-field-top-res-960-value="721" data-field-left-res-960-value="28" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="https://slurm.io/info"style="color: inherit">Юридическая информация</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791742566995756' data-elem-id='1742566995756' data-elem-type='text' data-field-top-value="650" data-field-left-value="16" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="1344" data-field-left-res-320-value="9" data-field-width-res-320-value="300" data-field-top-res-480-value="1341" data-field-left-res-480-value="19" data-field-width-res-480-value="440" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="658" data-field-left-res-640-value="20" data-field-top-res-960-value="687" data-field-left-res-960-value="28" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="https://slurm.io/newsletter"style="color: inherit">Согласие на рассылку</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu--partner tn-elem__4954535791723122768750' data-elem-id='1723122768750' data-elem-type='text' data-field-top-value="373" data-field-left-value="886" data-field-height-value="48" data-field-width-value="360" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="793" data-field-left-res-320-value="57" data-field-width-res-320-value="300" data-field-top-res-480-value="1128" data-field-left-res-480-value="71" data-field-width-res-480-value="440" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="973" data-field-left-res-640-value="89" data-field-height-res-640-value="48" data-field-width-res-640-value="330" data-field-container-res-640-value="grid" data-field-heightunits-res-640-value="px" data-field-textfit-res-640-value="autoheight" data-field-top-res-960-value="409" data-field-left-res-960-value="709" data-field-width-res-960-value="215"> <div class='tn-atom'field='tn_text_1723122768750'><strong style="font-weight: 700;">СДЕЛАНО В РОССИИ</strong><br>Входим в реестр Российского ПО</div> </div> <div class='t396__elem tn-elem uc-footer-menu--partner tn-elem__4954535791768398747383000001' data-elem-id='1768398747383000001' data-elem-type='text' data-field-top-value="297" data-field-left-value="816" data-field-height-value="48" data-field-width-value="360" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-top-res-320-value="1099" data-field-left-res-320-value="9" data-field-width-res-320-value="300" data-field-top-res-480-value="1068" data-field-left-res-480-value="20" data-field-width-res-480-value="335" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="874" data-field-left-res-640-value="328" data-field-height-res-640-value="48" data-field-width-res-640-value="273" data-field-container-res-640-value="grid" data-field-heightunits-res-640-value="px" data-field-textfit-res-640-value="autoheight" data-field-top-res-960-value="317" data-field-left-res-960-value="636" data-field-width-res-960-value="288"> <div class='tn-atom'><a href="https://core247.io/"rel="nofollow"style="color: inherit"><strong style="font-weight: 700;">CORE 24/7.</strong> Официальный представитель Слёрма в Казахстане.</a></div> </div> <div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791726735717183' data-elem-id='1726735717183' data-elem-type='text' data-field-top-value="465" data-field-left-value="16" data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="16" data-field-left-res-320-value="6" data-field-width-res-320-value="140" data-field-top-res-480-value="448" data-field-left-res-480-value="16" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15" data-field-top-res-640-value="416" data-field-left-res-640-value="20" data-field-top-res-960-value="485" data-field-left-res-960-value="28" data-field-width-res-960-value="264"> <div class='tn-atom'><a href="https://rutube.ru/channel/39652890/"rel="nofollow"style="color: inherit">Rutube</a></div> </div> <div class='t396__elem tn-elem tn-elem__4954535791768399150632' data-elem-id='1768399150632' data-elem-type='shape' data-field-top-value="369" data-field-left-value="820" data-field-height-value="55" data-field-width-value="55" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-top-res-320-value="794" data-field-left-res-320-value="10" data-field-top-res-480-value="1129" data-field-left-res-480-value="21" data-field-height-res-480-value="41" data-field-width-res-480-value="41" data-field-top-res-640-value="968" data-field-left-res-640-value="24" data-field-top-res-960-value="417" data-field-left-res-960-value="640"> <div class='tn-atom'> </div> </div> <div class='t396__elem tn-elem tn-elem__4954535791768399141699' data-elem-id='1768399141699' data-elem-type='image' data-field-top-value="378" data-field-left-value="829" data-field-height-value="38" data-field-width-value="38" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-filewidth-value="512" data-field-fileheight-value="512" data-field-heightmode-value="hug" data-field-top-res-320-value="801" data-field-left-res-320-value="17" data-field-height-res-320-value="28" data-field-top-res-480-value="1136" data-field-left-res-480-value="28" data-field-height-res-480-value="28" data-field-width-res-480-value="28" data-field-top-res-640-value="977" data-field-left-res-640-value="33" data-field-height-res-640-value="38" data-field-top-res-960-value="426" data-field-left-res-960-value="649" data-field-height-res-960-value="38"> <div class='tn-atom'> <img class='tn-atom__img t-img' data-original='https://static.tildacdn.com/tild6664-3637-4833-b338-393633633963/coat-of-arms_3.svg'
src='https://static.tildacdn.com/tild6664-3637-4833-b338-393633633963/coat-of-arms_3.svg'
alt='' imgfield='tn_img_1768399141699'
/> </div> </div> </div> </div> <script>t_onReady(function() {t_onFuncLoad('t396_init',function() {t396_init('495453579');});});</script> <!-- /T396 --> </div> <div id="rec825799301" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <style>
/*Добавляем скругления углов у карточек стандартных блоков*/
.t-popup__container{ /*Сюда вставляем класс блока из таблицы выше*/
border-radius: 16px !important; /*Радиус скругления у блока*/
overflow: hidden; /*Используется для некоторых блоков, к которым не применяется скругление*/
/*Если нужно скруглить углы, каждый по отдельности, то используйте вместо одного значения четыре,
написав их через пробел, например 20px 30px 10px 50px*/
}
</style> <style>
/*Размытие фона*/
.t-popup.t-popup_show {
-webkit-backdrop-filter: blur(5px);
backdrop-filter: blur(5px);
}
</style> <!-- nominify end --> </div> </div> </div> </div> </footer> <!--/footer--> </div> <!--/allrecords--> <!-- Stat --> <!-- Yandex.Metrika counter 49219348 --> <script type="text/javascript" data-tilda-cookie-type="analytics">setTimeout(function(){(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})(window,document,"script","https://mc.yandex.ru/metrika/tag.js","ym");window.mainMetrikaId='49219348';ym(window.mainMetrikaId,"init",{clickmap:true,trackLinks:true,accurateTrackBounce:true,webvisor:true,params:{__ym:{"ymCms":{"cms":"tilda","cmsVersion":"1.0"}}},ecommerce:"dataLayer"});},2000);</script> <noscript><div><img src="https://mc.yandex.ru/watch/49219348" style="position:absolute; left:-9999px;" alt="" /></div></noscript> <!-- /Yandex.Metrika counter --> <script type="text/javascript">if(!window.mainTracker) {window.mainTracker='tilda';}
window.tildastatscroll='yes';setTimeout(function(){(function(d,w,k,o,g) {var n=d.getElementsByTagName(o)[0],s=d.createElement(o),f=function(){n.parentNode.insertBefore(s,n);};s.type="text/javascript";s.async=true;s.key=k;s.id="tildastatscript";s.src=g;if(w.opera=="[object Opera]") {d.addEventListener("DOMContentLoaded",f,false);} else {f();}})(document,window,'3ca9b9471ab76a4a58118835b5fb250d','script','https://static.tildacdn.com/js/tilda-stat-1.0.min.js');},2000);</script> <!-- Rating Mail.ru counter --> <script type="text/javascript" data-tilda-cookie-type="analytics">setTimeout(function(){var _tmr=window._tmr||(window._tmr=[]);_tmr.push({id:"3557140",type:"pageView",start:(new Date()).getTime()});window.mainMailruId='3557140';(function(d,w,id) {if(d.getElementById(id)) {return;}
var ts=d.createElement("script");ts.type="text/javascript";ts.async=true;ts.id=id;ts.src="https://top-fwz1.mail.ru/js/code.js";var f=function() {var s=d.getElementsByTagName("script")[0];s.parentNode.insertBefore(ts,s);};if(w.opera=="[object Opera]") {d.addEventListener("DOMContentLoaded",f,false);} else {f();}})(document,window,"topmailru-code");},2000);</script> <noscript><img src="https://top-fwz1.mail.ru/counter?id=3557140;js=na" style="border:0;position:absolute;left:-9999px;width:1px;height:1px" alt="Top.Mail.Ru" /></noscript> <!-- //Rating Mail.ru counter --> </body> </html>