главная/Apache Kafka — PHP часть 1
apache-kafka-php

Apache Kafka — PHP часть 1

Apache Kafka — это распределенная система потоковой передачи данных с открытым исходным кодом, разработанная для работы с большим количеством данных в реальном времени.

Что это такое простыми словами, читайте тут

Kafka позволяет публиковать, хранить и обрабатывать потоки событий или сообщений в масштабируемом, надежном и быстром окружении. Широко используется для различных приложений, таких как аналитика в реальном времени, обработка потоковых данных, логирование и мониторинг.

Для работы с Kafka на PHP вы можете использовать библиотеку php-rdkafka. Вот как с ней работать:

Установите расширение rdkafka через pecl:

pecl install rdkafka

Включите расширение в вашем php.ini, добавив следующую строку:

extension=rdkafka.so

Установите библиотеку php-rdkafka с помощью Composer:

composer require arnaud-lb/php-rdkafka

Создайте Producer

Producer (производитель) — это приложение или часть приложения, которая отправляет сообщения (обычно называемые записями) в топики.

Топик — это именованная категория или канал, в котором хранятся и передаются сообщения. Производитель может отправлять сообщения с различной частотой и объемом данных. Сообщения могут представлять собой события, логи, метрики или любые другие данные, которые требуются для обработки или анализа.

Примеры использования Producer:

  1. Отправка событий пользовательской активности с веб-сайта или мобильного приложения.
  2. Отправка логов сервера или приложения для централизованного хранения и анализа.
  3. Отправка метрик системы или приложения для мониторинга и алертинга.

Создайте Producer, который отправляет сообщения в топик Kafka. Замените localhost:9092 на адрес вашего Kafka сервера и test на имя топика, в который вы хотите отправлять сообщения:

<?php
require 'vendor/autoload.php';

use RdKafka\Producer;
use RdKafka\Conf;

$conf = new Conf();
$producer = new Producer($conf);
$producer->addBrokers("localhost:9092");

$topic = $producer->newTopic("test");
$message = "Hello, Kafka from PHP!";
$topic->produce(RD_KAFKA_PARTITION_UA, 0, $message);
$producer->flush(10000);

Создайте Consumer

Consumer (потребитель) — это приложение или часть приложения, которая читает и обрабатывает сообщения из топиков Kafka. Потребители могут работать независимо или объединяться в группы для распределенной обработки сообщений.

Когда несколько потребителей объединяются в группу, Kafka автоматически балансирует нагрузку и распределяет обработку сообщений между членами группы.

Примеры использования Consumer:

  1. Обработка событий пользовательской активности для аналитики, рекомендаций или персонализации.
  2. Анализ и агрегация логов сервера или приложения для обнаружения ошибок, предупреждений или важных событий.
  3. Мониторинг метрик системы или приложения для определения проблем производительности или других аномалий.

Создайте Consumer, который читает сообщения из топика Kafka. Замените localhost:9092 на адрес вашего Kafka сервера и test на имя топика, из которого вы хотите читать сообщения:

<?php
require 'vendor/autoload.php';

use RdKafka\Conf;
use RdKafka\KafkaConsumer;

$conf = new Conf();
$conf->set('group.id', 'myGroup');
$conf->set('metadata.broker.list', 'localhost:9092');

$consumer = new KafkaConsumer($conf);
$consumer->subscribe(['test']);

while (true) {
    $message = $consumer->consume(1000);
    if ($message->err === RD_KAFKA_RESP_ERR_NO_ERROR) {
        echo "Received message: " . $message->payload . "\n";
    }
}

В целом, Producer и Consumer работают вместе в системе Kafka для передачи и обработки данных в реальном времени, обеспечивая высокую пропускную способность, низкую задержку и отказоустойчивость.

Теперь, когда у вас есть примеры кода для отправки и чтения сообщений с использованием PHP и Kafka, вы можете адаптировать их для своих нужд и интегрировать с вашими приложениями.

Часть вторая