Обмен технологиями

Вывод базовой схемы Kafka

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. Одноточечная модель

1. Понятие существительного

  1. Маклер : относится к узлу в кластере Kafka. Кластер Kafka состоит из нескольких брокеров, которые работают вместе, обеспечивая хранение, передачу и потребление сообщений. Брокер управляет одним или несколькими разделами.

  2. Тема : производитель отправляет сообщение в указанную тему, а потребитель подписывается на тему, чтобы получить сообщение. Сама тема представляет собой просто логическую группировку и не имеет понятия физического хранилища.

  3. Разделение : Это подмножество Topic и базовая единица хранения и обработки сообщений в Kafka. Каждую тему можно разделить на несколько разделов, и каждый раздел представляет собой упорядоченную неизменяемую последовательность сообщений.

  4. Реплика: раздел может иметь несколько копий.

  5. Лидер Брокер: При наличии нескольких копий раздела брокер отвечает за обработку всех запросов на чтение и запись для раздела.

  6. ПодписчикБрокер: При наличии нескольких копий раздела брокер, ответственный за синхронизацию данных лидера, находится в разделе.

Вставьте сюда описание изображения

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

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

2. Распределенное кластерно-горизонтальное расширение

1. Тема с несколькими разделами

Вставьте сюда описание изображения

О производстве

Производители подключаются к кластеру Kafka через Bootstrap Broker. Этот шаг заключается в установке первоначального соединения и получении метаданных кластера.

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

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

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

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

О потреблении

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

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

  • Один потребитель подписывается на тему

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

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

    • Каждая группа будет использовать все сообщения в теме независимо. То есть сообщение транслируется всем потребителям в группе.

О добавлении новых разделов

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

2. Несколько копий разделов

Вставьте сюда описание изображения

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

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