Быстрый старт с Kafka

Шаг 1: Получить Kafka

Загрузите последнюю версию Kafka и распакуйте ее:

$ tar -xzf kafka_2.13-2.7.0.tgz
$ cd kafka_2.13-2.7.0

Шаг 2: Запустить среду Kafka

Примечание. В вашей локальной среде должна быть установлена Java 8+.

Выполните следующие команды, чтобы запустить все службы в правильном порядке:

# Запустить сервис ZooKeeper
# Примечание. 
# Скоро ZooKeeper больше не будет требоваться для Apache Kafka.
$ bin/zookeeper-server-start.sh config/zookeeper.properties

Откройте другой сеанс терминала и запустите:

# Запустить брокерскую службу Kafka
$ bin/kafka-server-start.sh config/server.properties

После успешного запуска всех служб у вас будет запущена и готова к использованию базовая среда Kafka.

Шаг 3: Создать тему (topic) для сохранения событий

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

Примерами событий являются платежные транзакции, обновления геолокации с мобильных телефонов, заказы на доставку, измерения датчиков с устройств IoT или медицинского оборудования и многое другое. Эти события организованы и хранятся в темах. Очень упрощенно, тема похожа на папку в файловой системе, а события - это файлы в этой папке.

Итак, прежде чем вы сможете написать свои первые события, вы должны создать тему. Откройте другой сеанс терминала и запустите:

$ bin/kafka-topics.sh --create --topic quickstart-events --bootstrap-server localhost:9092

Все инструменты командной строки Kafka имеют дополнительные параметры: запустите команду kafka-topics.sh без каких-либо аргументов, чтобы отобразить информацию об использовании. Например, он также может показать вам такие подробности, как количество разделов новой темы:

$ bin/kafka-topics.sh --describe --topic quickstart-events --bootstrap-server localhost:9092

Topic:quickstart-events  PartitionCount:1    ReplicationFactor:1 Configs:
    Topic: quickstart-events Partition: 0    Leader: 0   Replicas: 0 Isr: 0

Шаг 4: Запишите события в тему

Клиент Kafka связывается с брокерами Kafka через сеть для записи (или чтения) событий. После получения брокеры будут хранить события в надежном и отказоустойчивом виде столько времени, сколько вам нужно - даже навсегда.

Запустите консольный клиент производителя (producer client), чтобы записать несколько событий в вашу тему. По умолчанию каждая вводимая вами строка приводит к записи отдельного события в тему.

$ bin/kafka-console-producer.sh --topic quickstart-events --bootstrap-server localhost:9092

This is my first event
This is my second event

Вы можете остановить клиента производителя с помощью Ctrl-C в любое время.

Шаг 5: Прочитать события

Откройте другой сеанс терминала и запустите клиентский консольный клиент, чтобы прочитать только что созданные события:

$ bin/kafka-console-consumer.sh --topic quickstart-events --from-beginning --bootstrap-server localhost:9092

This is my first event
This is my second event

Вы можете остановить клиентского клиента с помощью Ctrl-C в любое время.

Не стесняйтесь экспериментировать: например, переключитесь обратно на свой терминал производителя (предыдущий шаг), чтобы записать дополнительные события, и посмотрите, как события немедленно отображаются в вашем потребительском терминале.

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

Шаг 6: Импорт/экспорт данных как поток событий с Kafka Connect

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

Шаг 7: Обработка событий с Kafka Streams

Как только ваши данные будут сохранены в Kafka как события, вы можете обрабатывать их с помощью клиентской библиотеки Kafka Streams для Java/Scala. Она позволяет вам реализовать критически важные приложения и микросервисы реального времени, где входные и/или выходные данные хранятся в темах Kafka. Kafka Streams сочетает в себе простоту написания и развертывания стандартных приложений Java и Scala на стороне клиента с преимуществами серверной кластерной технологии Kafka, чтобы сделать эти приложения высокомасштабируемыми, эластичными, отказоустойчивыми и распределенными. Библиотека поддерживает однократную обработку, операции и агрегирование с отслеживанием состояния, управление окнами, объединения, обработку на основе времени события и многое другое.

Чтобы дать вам первое представление, вот как можно реализовать популярный алгоритм WordCount:

KStream<String, String> textLines = builder.stream("quickstart-events");

KTable<String, Long> wordCounts = textLines
            .flatMapValues(line -> Arrays.asList(line.toLowerCase().split(" ")))
            .groupBy((keyIgnored, word) -> word)
            .count();

wordCounts.toStream().to("output-topic"), Produced.with(Serdes.String(), Serdes.Long()));

Шаг 8: Свернуть среду Kafka

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

  1. Остановите клиентов-производителей и потребителей с помощью Ctrl-C, если вы еще этого не сделали.
  2. Остановите брокера Kafka с помощью Ctrl-C.
  3. Наконец, остановите сервер ZooKeeper с помощью Ctrl-C.

Если вы также хотите удалить какие-либо данные вашей локальной среды Kafka, включая любые события, созданные вами в процессе, выполните команду:

$ rm -rf /tmp/kafka-logs /tmp/zookeeper


Читайте также:

Комментарии

Популярные сообщения из этого блога

Язык поисковых запросов в Graylog

Нормальные формы, пример нормализации в базе данных

Хэш-таблица: разрешение коллизий