Apache Kafka (Kafka) — распределённая платформа потоковой передачи данных, которая позволяет обрабатывать большие объёмы данных в реальном времени. Она используется для создания систем обработки данных, хранения и передачи сообщений между различными компонентами приложений. Подробнее см. в официальной документации Kafka.
Основные компоненты Kafka
Основными компонентами Kafka являются:
- Топики (Topics) — логические каналы, в которые записываются сообщения. Каждый топик может иметь несколько партиций для масштабируемости;
- Партиции (Partitions) — подмножества топиков, которые позволяют разделять данные для более эффективного хранения и обработки. Каждая партиция хранит упорядоченные сообщения и может быть распределена по различным брокерам;
- Брокеры (Brokers) — серверы, которые хранят данные и обрабатывают запросы на запись и чтение;
- Продюсеры (Producers) — приложения, которые отправляют (публикуют) сообщения в топики;
- Потребители (Consumers) — приложения, которые читают (подписываются на) сообщения из топиков;
- Группы потребителей (Consumer Groups) — группы, которые позволяют нескольким потребителям совместно обрабатывать данные из одного топика.
Для запуска Kafka требуется установка сервиса ZooKeeper или KRaft. Выбор сервиса зависит от версии Kafka:
- ниже версии 2.8 — ZooKeeper;
- версии 2.8-3.9 — ZooKeeper или KRaft;
- версии 4.0 и выше — KRaft.
Установка Kafka на сервер совместно с ZooKeeper
Apache ZooKeeper — открытый сервер, который может использоваться совместно с Kafka для хранения конфигурационных данных BILLmanager. Чтобы установить Kafka совместно с Zookeeper:
- Загрузите актуальную версию Kafka с официального сайта Apache Kafka:
curl https://downloads.apache.org/kafka/3.8.0/kafka_2.13-3.8.0.tgz
- Распакуйте скачанный архив:
tar -xzf kafka_2.13-3.8.0.tgz
- Перейдите в директорию Kafka:
cd kafka_2.13-3.8.0
- Запустите ZooKeeper с помощью команды:
bin/zookeeper-server-start.sh config/zookeeper.properties
- Запустите брокер Kafka:
bin/kafka-server-start.sh config/server.properties
Установка Kafka на сервер совместно с KRaft
KRaft (Kafka Raft) — режим управления метаданными в Apache Kafka, который позволяет работать без ZooKeeper, начиная с версии Kafka 2.8.0. Установка Apache Kafka совместно с KRaft на сервере с BILLmanager не тестировалась. Подробнее о работе с KRaft см. официальную документацию Kafka, раздел Quickstart.
Установка и настройка Kafka на системе с Docker
-
Чтобы установить Kafka с помощью Docker, введите команду:
docker run -p 9092:9092 --name kafka -d apache/kafka:3.8.0
Пояснение - Создайте топики:
docker exec -it kafka /opt/kafka/bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --topic %имя топика%
Пояснение
Выгрузка данных в Kafka
В качестве продюсера Kafka может выступать модуль "Выгрузка для СОРМ" в BILLmanager. Эта интеграция не настроена по умолчанию. Подробнее о настройке продюсеров см. в официальной документации Kafka в статье Kafka Producer.
Чтобы настроить выгрузку данных из модуля "Выгрузка для СОРМ" в Kafka:
- Установите библиотеки Python:
pip3 install kafka-python-ng importlib_metadata
Пояснения - Cоздайте конфигурационный файл /usr/local/mgr5/etc/sorm/kafka.json:
Пример файла{ "topic": "sorm_data", "topics": { "client": "sorm_client", "user": "sorm_user", "auth_history": "sorm_auth", "payment": "sorm_payment", "item": "sorm_item", "domain": "sorm_domain", "ip": "sorm_ip", "ticket_message": "sorm_message" }, "bootstrap.servers": "localhost:9092", "security.protocol": "SASL_SSL", "sasl.mechanism": "PLAIN", "sasl.username": "your_username", "sasl.password": "your_password" }
Пояснения- Обязательным параметром является только bootstrap.servers.
- Вы можете не указывать параметры security.protocol, sasl.mechanism, sasl.username и sasl.password. Однако, если хотя бы один из этих параметров содержится в конфигурационном файле, то и остальные параметры должны быть включены.
- Если для типа данных не указан отдельный топик и параметр topic не задан, то информация будет записана в топик sorm:
1. Если для типа данных есть непустой топик в topics в конфигурационном файле, то будет выбран он.
2. Если условие 1 не выполнено, то модуль проверяет наличие непустого topic и задействует его для выгрузки.
3. Если условия 1 и 2 не выполнены, отправка будет осуществляться в топик "sorm".
Проверка работы Kafka
Для проверки работы Kafka вы можете читать и отправлять сообщения в топики.
Чтобы читать сообщения из топика, запустите команду:
bin/kafka-console-consumer.sh --topic my-topic --from-beginning --bootstrap-server localhost:9092
Чтобы отправить сообщение в топик, запустите команду:
bin/kafka-console-producer.sh --topic my-topic --bootstrap-server localhost:9092