Что такое Kafka в основном используется для концепции_kafka
Что такое Kafka в основном используется для концепции_kafka

Всем привет, мы снова встретились, я ваш друг Цюаньчжаньцзюнь.

1. Что такое Кафка

Kafka был первоначально разработан LinkedIn и внесен в Apache Foundation в 2010 году и с тех пор стал проектом верхнего уровня Apache.

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

В настоящее время все больше и больше систем распределенной обработки с открытым исходным кодом, таких как Cloudera, Storm, Spark, Flink и т. д., поддерживают интеграцию с Kafka.

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

  • Система сообщений: Kafka Обе традиционные системы обмена сообщениями (также называемые промежуточным программным обеспечением сообщений) имеют системную расшифровку, резервное хранилище, ограничение пикового трафика, буферизацию, асинхронную связь, масштабируемость, Восстанавливаемость и другие особенности. в то же время, Kafka Также предоставляет функции, которые трудно реализовать в большинстве систем обмена сообщениями.изГарантия последовательности сообщений и функция ретроактивного потребления
  • Система хранения: Kafka Сохранять сообщения на диск,По сравнению с другими системами на основе памяти С точки зрение эффективно снижает риск потери данных 。 Это тоже заслуга Кафки изФункция сохранения сообщений и механизм многократного копирования,я мы можем поставить Kafka Чтобы использовать его в качестве системы долговременного хранения данных, вам нужно всего лишь установить соответствующую политику хранения данных. Просто установите для него значение «постоянный» или включите функцию сжатия журнала темы. 。
  • Платформа потоковой обработки: Kafka не только предоставляет надежный источник данных для каждой популярной инфраструктуры потоковой обработки, но также предоставляет полную библиотеку классов потоковой обработки, такую ​​как окна, соединения, преобразования, агрегации и другие операции.

2. Сценарии применения Кафки

  • Сбор журналов. Компания может использовать Kafka для сбора журналов различных служб и использовать Kafka для предоставления услуг унифицированного интерфейса различным потребителям, таким как Hadoop, Hbase, Solr и т. д.
  • Система обмена сообщениями: разделение производителей и потребителей, кэширование сообщений и т. д.
  • Отслеживание активности пользователей: Kafka часто используется для записи различных действий веб-пользователей или пользователей приложений, таких как просмотр веб-страниц, поиск, нажатие кнопок и другие действия. Эта информация об активности публикуется различными серверами в темах Kafka, а затем подписчики подписываются на них. темы. Его можно использовать для мониторинга и анализа в реальном времени или загружать в Hadoop или хранилище данных для автономного анализа и анализа.
  • Операционные метрики: Kafka также часто используется для записи данных оперативного мониторинга. Включая сбор данных из различных распределенных приложений и создание централизованной обратной связи для различных операций, таких как сигналы тревоги и отчеты.

3. Базовые знания Кафки

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

3.1. Брокер (под ним можно понимать сервер сообщения).

  • Узел сервисного агента. Для Kafka Broker можно просто рассматривать как независимый узел службы Kafka или экземпляр службы Kafka;
  • Когда производитель сообщения отправляет сообщение в кластер брокеров, потребитель его потребляет;
  • Брокер зарегистрирует информацию об узле в Zookeeper;

3.2、Topic

  • Сообщения в Kafka классифицируются по темам. Производитель отвечает за отправку сообщений в определенную тему (каждое сообщение, отправляемое в кластер Kafka, должно указывать тему), а потребитель отвечает за подписку на тему и ее использование.
  • Тема — это логическая концепция. Во многих случаях раздел может быть разделен на несколько разделов. Иногда разделы еще называют тематическими разделами ( Topic-Partition)。Разные разделы одной темы содержат разные сообщения.,Раздел можно просматривать как присоединяемый журнал на уровне хранилища ( Log)документ,Сообщения добавляются в журнал раздела.、документиз Конкретныйизкомпенсировать(offset)。 offset — уникальный идентификатор сообщения в разделе середина.,Kafka использует его для обеспечения порядка сообщений внутри раздела.,носмещение не охватывает разделы,То есть, Kafka гарантирует порядок разделов, а не порядок тем.。Одна тема может охватывать несколько брокер, чтобы обеспечить лучшую производительность, чем одиночный broker Более мощная производительность 。

3.3、Producer

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

  • Параметры механизма сохранения производственного сообщения производителя
    • acks=0: указывает, что производитель не получает ответа от брокера, подтверждающего получение сообщения.,Вы можете продолжить отправку следующего сообщения. Высочайшая производительность,Но легче всего потерять новости.
    • acks=1: Хотя бы дождитесь пока лидер успешно запишет данные в локальный лог, но не owВсе ли фолловеры успешно написаны. Вы можете продолжить отправку следующего
    • acks=-1 или все: нужно подождать min.insync.replicas (по умолчанию — 1, рекомендуемая конфигурация больше или равна 2) Все копии, настроенные этим параметром, успешно записываются в журнал. Эта стратегия гарантирует, что пока сохраняется одна резервная копия, никакие данные не будут потеряны. Это самая надежная гарантия данных. Как правило, эта конфигурация будет использоваться только за исключением случаев, когда она используется на финансовом уровне или в ситуациях, когда вы имеете дело с деньгами.
  • механизм повторной отправки сообщения. В этом случае значение параметра retries определяет, сколько раз производитель может повторно отправить сообщение. Если это число будет достигнуто, производитель прекратит повторную попытку и вернет ошибку. По умолчанию производитель ожидает 100 мс между каждой повторной попыткой, и этот интервал можно настроить с помощью параметра retry.backoff.ms.
  • retry.backoff.ms: длина интервала повторных попыток
  • buffer.memory: установите локальный буфер для отправки сообщений. Если этот буфер установлен, сообщение будет сначала отправлено в локальный буфер, что может улучшить производительность отправки сообщений. Значение по умолчанию — 33554432, что составляет 32 МБ.
  • package.size: локальный поток Kafka будет извлекать данные из буфера и отправлять их брокеру в пакетном режиме. Установите размер пакетного сообщения. Значение по умолчанию — 16384, то есть размер пакета будет равен 16 КБ. отправляется, когда он заполнен до 16 КБ.
  • linger.ms: значение по умолчанию — 0, что означает, что сообщение должно быть отправлено немедленно, но это повлияет на производительность; обычно оно устанавливается равным примерно 10 миллисекундам, что означает, что после отправки сообщения оно попадет в локальный пакет. в течение 10 миллисекунд этот пакет. Когда 16 КБ заполнено, он будет отправлен вместе с пакетом; если пакет не заполнен в течение 10 миллисекунд, сообщение также должно быть отправлено, и задержка отправки сообщения не может быть слишком длинной.

3.4、Consumer

  • Потребитель сообщений, клиент, который читает сообщения от брокера.
  • Потребитель Kafka также имеет определенные возможности аварийного восстановления. Потребитель использует режим извлечения для получения сообщений с сервера и сохраняет конкретное место потребления. Когда потребитель возвращается в Интернет после отключения, он может повторно получить необходимые сообщения для потребления на основе ранее сохраненного места потребления, чтобы они были доступны. не приведет к потере сообщения.
  • Режим очереди: все потребители находятся в одной группе потребителей.
  • режим публикации-подписки: все потребители имеют свою уникальную группу потребителей.
  • auto.offset.reset: Если тема потребления представляет собой новую группу потребления или указан метод смещения потребления, а смещение не существует, то как его следует использовать? последний (по умолчанию) :Используйте только сообщения, отправленные в тему после ее запуска. самое раннее: начать потребление с нуля в первый раз и продолжать потребление в соответствии с записью смещения потребления в будущем. Это должно отличаться от Consumer.seekToBeginning (потреблять каждый раз с нуля).

3.4、ConsumerGroup

Каждый Потребитель принадлежит конкретному Потребителю. Group,Сообщение может быть использовано несколькими различными группами потребителей.,но один Consumer Только один потребитель в группе может получить сообщение.

3.5. Раздел

  • С физической точки зрения тема может быть разделена на несколько разделов, а внутренние сообщения в каждом разделе упорядочены. Kafka гарантирует порядок разделов, а не порядок тем.
  • Kafka Введено несколько реплик для разделов. (Replica) механизм, Увеличение количества копий может улучшить возможности аварийного восстановления.。Разные копии одного и того же раздела сохраняют одно и то же сообщение (одновременно).,Копии не совсем одинаковые),между копиями есть«Один мастер, много последователей»изсвязь,Чтосередина Ведущий экземпляр отвечает за обработку запросов на чтение и запись. Копия-последователь несет ответственность только за общение с копия лидера Синхронизация сообщений. Копия находится в другом broker середина ,когда leader Когда реплика терпит неудачу, ведомый follower Копировать середина переизбрать нового Ведущая копия предоставляет услуги внешнему миру.

Войдите в каталог bin Kafka, который я установил с помощью Docker, в /opt/bitnami/kafka/bin.

Создайте тему и установите коэффициент репликации 3, а в разделе 3 одного из Zookeepers указывается адрес службы ZooKeeper, к которому подключен Kafka, –topic указывает имя создаваемой темы, –replication-factor указывает коэффициент репликации, – разделы указывают количество разделов, –create — это команда действия для создания темы.

./kafka-topics.sh –create –zookeeper 192.168.0.113:2181 –replication-factor 3 –partitions 3 –topic test

Просмотр темы теста – описание отображает более конкретную информацию по теме;

./kafka-topics.sh –describe –zookeeper 192.168.0.113:2181 –topic test

Как показано на рисунке выше, всего существует 3 тематических раздела для тестов и 3 реплики.

  • Раздел 0: ведущая копия находится на узле сbroker.id=2.
  • Реплики: реплики находятся на узлах сbroker.id=2 4 3.
  • Isr: идентификатор реплики, который поддерживает определенную степень синхронизации.

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

Заявление об авторских правах: Содержание этой статьи добровольно предоставлено пользователями Интернета, а мнения, выраженные в этой статье, представляют собой только точку зрения автора. Этот сайт предоставляет только услуги по хранению информации, не имеет никаких прав собственности и не принимает на себя соответствующие юридические обязательства. Если вы обнаружите на этом сайте какое-либо подозрительное нарушение авторских прав/незаконный контент, отправьте электронное письмо, чтобы сообщить. После проверки этот сайт будет немедленно удален.

Издатель: Лидер стека программистов полного стека, укажите источник для перепечатки: https://javaforall.cn/189476.html Исходная ссылка: https://javaforall.cn

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода