Прежде всего, я извиняюсь, ребята, за то, что не публиковал сообщения какое-то время, я знаю, что прошла минута!

Сегодня в этом блоге будет затронута очень интересная тема, связанная с распределенными системами, которой является Kafka. Но подождите, упомянув распределенные системы, у вас была возможность ознакомиться с моим предыдущим постом, посвященным Apache Hadoop? Если ответ отрицательный, и у вас есть время сейчас или если вам скучно в субботу вечером, посмотрите здесь. Я с нетерпением жду ваших отзывов.

Вернемся к основному пункту этой статьи, пунктам, которые будут обсуждаться:

  • Определение Кафки
  • Что такое производитель, потребитель, группа потребителей, тема и сообщение
  • Тема в глубине
  • Разделы в глубине
  • Отказоустойчивость и Zookeeper в Kafka

Апач Кафка

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

Kafka — это кластер серверов или узлов (распределенная система).

Он также позволяет хранить, читать и анализировать потоковые данные и был разработан LinkedIn.

Производитель, потребитель, тема и сообщение

Концепция проста. Есть два конца: производитель — это конец, отправляющий сообщение, и потребитель — тот, кто слушает и получает его, оба действуют как внутренние службы. Тема, как это звучит, — это определенная тема, на которую подписан потребитель, поэтому он может получать сообщения, связанные с этой темой.

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

Группа потребителей

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

Увеличение темы и проработка разделов

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

Группы потребителей потребляют сообщения из разделов. Каждый потребитель отображается в определенный раздел.

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

Я знаю, что это сложно представить в вашей голове, поэтому проверьте это:

Увеличение масштаба разделов

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

Цифры в каждом разделе — это индекс сообщения.

Я продемонстрирую тест, который я сделал ранее на своем компьютере с Cloudera Linux, где я создал тему с моим именем и двумя группами потребителей (1 и 2), группа потребителей 1 имеет двух потребителей (потребитель 1,2), а группа потребителей 2 имеет один потребитель(потребитель 3)

Я знаю, что это не самое лучшее качество в мире, но я надеюсь, что вы найдете его полезным, я добавил его, потому что я думаю, что это сделает концепцию более ясной в вашем уме.

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

Как вы можете видеть на рисунке выше, производитель отправляет сообщения 1->8, потребители 1 и 2 получают сообщения по-разному, если вы помните, я упоминал ранее, что одно сообщение в разделе не отправляется более чем одному потребителю в потребительская группа.

С другой стороны, потребитель 3 в группе потребителей 2 является единственным потребителем в этой группе, поэтому он потребляет все сообщения.

Надеюсь, теперь вы сможете увидеть эту концепцию в другом свете.

Zookeeper и отказоустойчивость

Работник зоопарка

Как упоминалось ранее, Kafka — это кластер серверов, поэтому пришло время поговорить об очень важной части Kafka — Zookeeper.

Zookeeper находится во главе кластера. Он контролирует и управляет узлами, например, какие узлы (серверы) активны или отключены, а также обрабатывает тему и разделяет хранилище вместе с их метаданными.

Брокер на приведенном выше рисунке — это то же самое, что и сервер или узел, только другое название.

Отказоустойчивость

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

Когда сообщение поступает, оно направляется в раздел в одном из узлов, известном как лидер. Зоопарк назначает лидера.

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

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

Учитывая эти 3 репликации, есть один лидер и два резервных. Таким образом, мы можем выдержать отказ до 2-х узлов, потому что, если и третий выйдет из строя, мы потеряем данные, и, конечно, мы этого не хотим…

Каждый раз, когда узел выходит из строя, Zookeeper избирает нового лидера раздела, который завершит работу с того места, где он был остановлен.

Конечно, в каждой части есть более глубокие технические детали, чтобы узнать больше о Кафке, я рекомендую эти замечательные ресурсы:

  1. Апач Кафка за 6 минут.
  2. Визуализация Кафки.

Спасибо, что уделили время, и давайте расширим наши знания!