Документация BILLmanager 6

Использование Apache Kafka с модулем "Выгрузка для СОРМ"

Статья содержит инструкции по настройке Apache Kafka для передачи данных модуля "Выгрузка для СОРМ" платформы BILLmanager. В текущей версии платформа тестировалась с Kafka 3.8. Инструкции для актуальной версии Kafka см. в официальной документации.

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:

  1. Загрузите актуальную версию Kafka с официального сайта Apache Kafka:
    curl https://downloads.apache.org/kafka/3.8.0/kafka_2.13-3.8.0.tgz
  2. Распакуйте скачанный архив:
    tar -xzf kafka_2.13-3.8.0.tgz
  3. Перейдите в директорию Kafka:
    cd kafka_2.13-3.8.0
  4. Запустите ZooKeeper с помощью команды:
    bin/zookeeper-server-start.sh config/zookeeper.properties
  5. Запустите брокер 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

  1. Чтобы установить Kafka с помощью Docker, введите команду:

    docker run -p 9092:9092 --name kafka -d apache/kafka:3.8.0
    Пояснение
  2. Создайте топики:
    docker exec -it kafka /opt/kafka/bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --topic %имя топика%
    Пояснение
Пример базовой настройки Kafka с помощью Docker см. в статье документации Docker Hub https://hub.docker.com/r/apache/kafka

Выгрузка данных в Kafka

После применения этих настроек информация не будет сохраняться в базе данных billmgr_sorm.

В качестве продюсера Kafka может выступать модуль "Выгрузка для СОРМ" в BILLmanager. Эта интеграция не настроена по умолчанию. Подробнее о настройке продюсеров см. в официальной документации Kafka в статье Kafka Producer.

Чтобы настроить выгрузку данных из модуля "Выгрузка для СОРМ" в Kafka:

  1. Установите библиотеки Python:
    pip3 install kafka-python-ng importlib_metadata
    Пояснения
  2. 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