Серия Кафка (1) - Введение в Кафку

Kafka

1. Введение

ApacheKafka — это платформа для распределенной обработки потоков. Он имеет следующие характеристики:

  • Поддержка публикации сообщений и подписки, аналогично RabbtMQ, ActiveMQ и другим очередям сообщений;
  • Поддержка обработки данных в режиме реального времени;
  • Он может обеспечить надежную доставку сообщений;
  • Поддерживает постоянное хранение сообщений и обеспечивает отказоустойчивость сообщений благодаря схеме распределенного хранения с несколькими копиями;
  • Благодаря высокой пропускной способности один брокер может легко обрабатывать тысячи разделов и миллионы сообщений в секунду.

2. Основные понятия

2.1 Messages And Batches

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

2.2 Topics And Partitions

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

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

https://github.com/heibaiying

2.3 Producers And Consumers

1. Продюсер

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

2. Потребители

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

https://github.com/heibaiying

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

https://github.com/heibaiying

2.4 Brokers And Clusters

Автономный сервер Kafka называется брокером. Брокер получает сообщения от производителей, устанавливает смещения для сообщений и фиксирует сообщения на диск для сохранения. Брокеры обслуживают потребителей, отвечая на запросы на чтение разделов, возвращая сообщения, которые были зафиксированы на диске.

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

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

https://github.com/heibaiying

использованная литература

Неха Наркхеде, Гвен Шапира, Тодд Палино (автор), Сюэ Миндэн (переводчик). Полное руководство по Кафке. People's Posts and Telecommunications Press. 26 декабря 2017 г.

Дополнительные статьи серии о больших данных см. в проекте с открытым исходным кодом GitHub.:Руководство для начинающих по большим данным