Документация 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
Дата последнего обновления статьи: 01.04.2025. Статья подготовлена техническими писателями ISPsystem.