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) может называться различное программное обеспечение или компонент, который служит посредником между различными системами или сервисами. Брокер обычно отвечает за управление соединениями, маршрутизацию данных, обработку запросов и координацию действий между участниками сети.