Kafka Docker установка

# Проще через докер Docker Установка Apache Kafka с использованием Docker — это отличный способ, так как он позволяет вам изолировать среду разработки или тестирования, не беспокоясь о настройке виртуальной машины или локального окружения. Вот пошаговая инструкция для установки Kafka через Docker: ### Шаг 1: Установка Docker и Docker Compose Если у вас еще нет Docker и Docker Compose, установите их на свой компьютер. Инструкции можно найти на официальных сайтах Docker: - [Установка Docker](https://docs.docker.com/get-docker/) - [Установка Docker Compose](https://docs.docker.com/compose/install/) ### Шаг 2: Создание файла `docker-compose.yml` Создайте файл с именем `docker-compose.yml`, который будет описывать конфигурацию вашего Kafka кластера. Вот пример конфигурации: ```yaml version: '3' services: zookeeper: image: wurstmeister/zookeeper ports: - "2181:2181" kafka: image: wurstmeister/kafka depends_on: - zookeeper ports: - "9092:9092" environment: KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 KAFKA_ADVERTISED_HOST_NAME: 127.0.0.1 KAFKA_ADVERTISED_PORT: 9092 ``` ИЛИ ``` services: zookeeper: image: confluentinc/cp-zookeeper:7.7.0 # Используемый образ Zookeeper hostname: zookeeper # Имя хоста для контейнера Zookeeper container_name: zookeeper # Имя контейнера Zookeeper ports: - "2181:2181" # Порт для клиентских подключений к Zookeeper environment: ZOOKEEPER_CLIENT_PORT: 2181 # Порт, на котором Zookeeper будет слушать клиентские подключения ZOOKEEPER_TICK_TIME: 2000 # Время тика Zookeeper в миллисекундах kafka: image: confluentinc/cp-kafka:7.7.0 # Используемый образ Kafka hostname: kafka # Имя хоста для контейнера Kafka container_name: kafka # Имя контейнера Kafka depends_on: - zookeeper # Kafka зависит от Zookeeper, должен быть запущен первым ports: - "9092:9092" # Порт для клиентских подключений к Kafka - "9997:9997" # Порт для JMX (Java Management Extensions) мониторинга environment: KAFKA_BROKER_ID: 1 # Уникальный идентификатор брокера Kafka KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181' # Адрес Zookeeper для подключения KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT # Настройка протоколов безопасности для слушателей KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092 # Объявленные слушатели для Kafka KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 # Фактор репликации для темы смещений KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0 # Задержка перед началом перераспределения групп KAFKA_CONFLUENT_LICENSE_TOPIC_REPLICATION_FACTOR: 1 # Фактор репликации для темы лицензий Confluent KAFKA_CONFLUENT_BALANCER_TOPIC_REPLICATION_FACTOR: 1 # Фактор репликации для темы балансировщика Confluent KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1 # Минимальное количество реплик, необходимых для записи в журнал состояния транзакций KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1 # Фактор репликации для журнала состояния транзакций KAFKA_JMX_PORT: 9997 # Порт для JMX мониторинга KAFKA_JMX_HOSTNAME: kafka # Имя хоста для JMX мониторинга kafka-ui: image: provectuslabs/kafka-ui:v0.7.2 # Образ Kafka UI container_name: kafka-ui # Имя контейнера Kafka UI ports: - "9000:8080" # Порт для доступа к веб-интерфейсу Kafka UI environment: KAFKA_CLUSTERS_0_NAME: "local" # Имя кластера KAFKA_CLUSTERS_0_BOOTSTRAP_SERVERS: "kafka:29092" # Адрес Kafka брокера ``` docker-compose -f 1.yml up --force-recreate ### Шаг 3: Запуск Docker Compose Откройте терминал и перейдите в директорию, где находится ваш файл `docker-compose.yml`. Затем выполните команду для запуска Kafka кластера: ```sh docker-compose up -d ``` Эта команда загрузит необходимые образы Docker и запустит контейнеры Zookeeper и Kafka в фоновом режиме. ### Шаг 4: Проверка работы Kafka После запуска контейнеров вы можете проверить, что все работает правильно, используя команду `docker ps`: ```sh docker ps ``` Вы должны увидеть два контейнера: один для Zookeeper и один для Kafka. ### Шаг 5: Настройка клиента Kafka Теперь вы можете настроить свой клиент Kafka (например, `kafka-console-producer` или `kafka-console-consumer`) для взаимодействия с запущенным кластером. Пример использования `kafka-console-producer`: ```sh docker exec -it kafka /bin/bash kafka-console-producer.sh --broker-list localhost:9092 --topic test ``` Пример использования `kafka-console-consumer`: ```sh docker exec -it kafka /bin/bash kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning ``` ### Завершение работы Чтобы остановить и удалить контейнеры, выполните команду: ```sh docker-compose down ``` Эта команда остановит и удалит все запущенные контейнеры, освободив ресурсы. Теперь у вас есть работающий кластер Kafka, установленный с помощью Docker. Вы можете расширять этот пример в соответствии с вашими требованиями и задачами. --- Kafka кафка это брокер сообщений/шина данных для приёма огромного количества информации для общения микросервисов топик канал, отдельная труба в кафке, где передаётся инфа определённого типа которая ещё поделена на портишены (части) - это для параллельности сообщения сами распределяются по портишенам, но нарушается порядок но есть настройка при отправке с ключём, чтоб гарантировать порядок К сообщению можно присваивать ключ чтоб оно попадало в один и тот же портишн, чтоб порядок являлся последов кластер - много одинаковых серверов можно распределить портишены, но всё равно они будут содержать копию портишенов с другого сервера Кластер группа серверов с одной и той же прогой (например кафкой) называется кластером ЛИБО группа взаимосвязанных и взаимодействующих компонентов, которые объединяются для выполнения общей задачи или функциональности. реплика - копии данных, хранящихся в кластере Репликация - это процесс создания копий данных или функциональности, чтобы обеспечить надежность, доступность и масштабируемость системы. Надежность Масштабируемость Геораспределение Отказоустойчивость Буткемп - интенсивная образовательная программа, которая направлена на обучение начинающих даже не имеющих опыта программирования до уровня, достаточного для трудоустройства --- # продюсер создатель # консюмер потребитель доставка от кафки 0 или макс 1 at most once ИЛИ миним 1 макс до беск at least once продюсер ждёт ответа от кафки, что данные сохран на диск на стороне потребителя проверять дубли идемпотентный консьюмер - фильтр на дубликат позволяет работать с дублями так, буд-то это всегда было одно сообщение (нет последствий от дублей) Zookeeper — на ней работает кафка.. предоставлять простую и надежную систему управления состоянием для сложных, распределенных приложений. брокер - посредник (broker) может называться различное программное обеспечение или компонент, который служит посредником между различными системами или сервисами. Брокер обычно отвечает за управление соединениями, маршрутизацию данных, обработку запросов и координацию действий между участниками сети.