Skip to content

Теория и практика по Кафке

Notifications You must be signed in to change notification settings

DragonDamage/Kafka

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Теория по Kafka:

Общие сущности:

Kafka (Кафка) это брокер сообщений - распределенная платформа для обработки и передачи потоковых данных. Она предоставляет возможности для публикации, подписки и обработки потоковых данных в реальном времени
Producer (Производитель) это клиент, который публикует (отправляет) сообщения в топики Kafka. Продюсеры генерируют данные и отправляют их на брокеры
Consumer (Потребитель) это клиент, который подписывается на топики Kafka и считывает (получает) сообщения из них. консьюмеры обрабатывают данные, полученные от продюсеров
Broker (Брокер) это сервер, который хранит и управляет данными в Kafka. Брокеры принимают данные от продюсеров, хранят их на диске и предоставляют их консьюмерам

Screenshot


Кафка выступает в качестве брокера:

Screenshot


Сущности Kafka:

Kafka Broker (Kafka Server/Kafka Node) это сервер, который принимает, хранит и выдаёт сообщения
Zookeeper (Координатор) кластер кафка - это хранилище данных с состоянием кластера, конфигурации и мета-данные
Controller (специальный брокер) обеспечивает консистентность данных - это компонент, отвечающий за управление состоянием разделов и реплик в кластере Kafka. Он выполняет административные задачи, такие как выбор лидера, переназначение разделов и обработка сбоев брокеров. Контроллер работает в виде потока в одном из брокеров кластера Kafka и координирует и управляет общим состоянием кластера. Он обеспечивает, чтобы каждый раздел имел лидера и правильное распределение реплик для обеспечения отказоустойчивости и масштабируемости системы
Kafka Message (Record/Event) сообщение Kafka - это основная единица данных, которая передается и обрабатывается. Сообщение представляет собой упорядоченную последовательность байтов и может содержать любую информацию, которую продюсер отправляет в топик Kafka. Имеет структуру: key-value pair
Kafka Topic (Топик) это набор данных, которые отправляет продюсер и будет считывать консьюмер (в том же порядке, котором были отправленны). RabbitMQ так не умеет (там отправка/приём идёт только по приоритету). Так же топик может иметь несколько партиций
Partition (Партиция) находятся внутри топиков, ускоряет чтение и запись данных путём параллелизации
Broker File System это брокеровская файловая система - это место (broker), где хранятся данные топиков (папка ./logs)
Offset (оффсет) это номер сообщения в партиции
Producer (Производитель) это высокопроизводительный отправитель сообщений (клиент, который отправляет сообщения в топики Kafka. Продюсеры генерируют данные и отправляют их на брокеры
Consumer (Потребитель) это высокопроизводительный получатель сообщений (клиент, который подписывается на топики Kafka и получает сообщения из них. консьюмеры обрабатывают данные, полученные от продюсеров)
Consumer Group (Группа потребителей) это несколько консьюмеров, которые работают вместе для обработки сообщений из одного или нескольких топиков. Каждое сообщение в топике будет обработано только одним консьюмером в группе
Lag (Задержка) это разница между последним доступным сообщением в партиции и текущим положением консьюмера. Задержка показывает, насколько консьюмер отстает от продюсера
Consumer Offsets (Консьюмеры оффсетов) это информация о прогрессе консьюмера в чтении сообщений из топиков. Консьюмеры оффсетов отслеживают, на каком сообщении они остановились, чтобы продолжить чтение с этой позиции при следующем запуске

Kafka Message/сообщение Kafka:

Screenshot

Структура хранения топиков/партиций:

Screenshot


Как удалить данные из топика?

Screenshot


Репликация:

Screenshot


Конфигурации и логирование:

cd /var/log/kafka           # Логи kafka
./kafka-topics.sh --version # Посмотреть версию kafka (в папке /opt/kafka/bin/)
cat /etc/schema-registry/schema-registry.properties # Конфигурация схемы реестров
cat /opt/kafka/config/server.properties             # Конфигурация kafka

[BROKER]:

./kafka-topics.sh --bootstrap-server localhost:9092 --describe # Проверка количества подключенных брокеров кафка к ноде (в папке /opt/kafka/bin/)
./kafka-server-start.sh /opt/kafka/config/server.properties    # Рестарт брокера

[ZOOKEEPER]:

echo stat | nc {ip}:9092               # Просмотр доступа к зукиперу
./zookeeper-shell.sh localhost:2181    # Подключение к зукиперу
get /brokers/topics/{topic_name}       # Просмотр брокера в консоли зукипера
./opt/zookeeper/bin/zkServer.sh status # Статус zookeeper
cat /opt/zookeeper/conf/zoo.cfg        # Конфигурация zookeeper
./zkServer.sh version                  # Версия zookeeper (в папке /opt/zookeeper/bin/)

[TOPICS]:

./kafka-topics.sh --list --bootstrap-server localhost:9092 # Вывести список всех топиков (в папке /opt/kafka/bin/)
./kafka-topics.sh --describe --topic {topic_name} --bootstrap-server localhost:9092 # Посмотреть информацию о топике (в папке /opt/kafka/bin/)
./kafka-topics.sh --alter --topic {topic_name} --bootstrap-server localhost:9092 --config {config_name}={config_value} # Изменение конфигурации топика (в папке /opt/kafka/bin/)
./kafka-topics.sh --create --topic {topic_name} --bootstrap-server localhost:9092 # Создание топика по умолчанию (в папке /opt/kafka/bin/)
./kafka-topics.sh --zookeeper zoo1.example.com:2181/kafka-cluster --create --topic {topic_name} --replication-factor 3 --partitions 8 # Создание топика с конкретными параметрами (в папке /opt/kafka/bin/)
./kafka-topics.sh --bootstrap-server localhost:9092 --delete --topic {topic_name} # Удаление топика (в папке /opt/kafka/bin/)
./kafka-topics.sh --bootstrap-server localhost:9092 --delete-all # Удаление всех топиков (в папке /opt/kafka/bin/) - Если выдаёт ошибку, то пишем скрипт:
--------------------------------------------------------------------------------- script_delete_all_topic.sh
#!/bin/bash
# Список всех топиков
topics=$(.kafka-topics.sh --list --bootstrap-server localhost:9092)
# Удаление топиков
for topic in $topics; do
    ./kafka-topics.sh --delete --topic "$topic" --bootstrap-server localhost:9092
    echo "Deleted topic: $topic"
done
---------------------------------------------------------------------------------
./kafka-topics.sh --bootstrap-server localhost:9092 --describe # Посмотреть конфигурацию всех топиков и брокеров (в папке /opt/kafka/bin/)
echo "Text message" | bin/kafka-console-producer.sh --broker-list localhost:9092 --topic {topic_name} # Отправка сообщения в топик
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic {topic_name} --from-beginning # Подключение к топику и чтение сообщения

About

Теория и практика по Кафке

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published