Иллюстрирование Kafka: эволюция и обновление архитектуры Kafka!
Иллюстрирование Kafka: эволюция и обновление архитектуры Kafka!

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

1. Первые впечатления Кафки

Kafka был первоначально разработан корпорацией LinkedIn, а затем стал проектом с открытым исходным кодом Apache Software Foundation. Основная цель его разработки — предоставить высокопроизводительную, надежную и распределенную систему обмена сообщениями.

2. Инфраструктура Кафки

Простейшая инфраструктура Kafka выглядит следующим образом:

Кафка в основном состоит из следующих 4 частей:

  1. Продюсер:отправитель сообщения,Продюсеры несут ответственность за создание сообщений,Затем доставьте его Кафке (Брокеру).
  2. Потребитель:Получатель,Потребители подключаются к Kafka и получать сообщения, а затем выполнять соответствующую обработку бизнес-логики.
  3. Маклер:один Broker можно просто рассматривать как один независимый Kafka сервисный узел или Kafka Экземпляр службы. В большинстве случаев также возможно Broker рассматривается как один Kafka Сервер, предполагается, что на этом сервере развернут только один сервер. Kafka Пример. один или более Broker состоит из одного Kafka кластер. Вообще говоря, мы больше привыкли использовать строчные буквы. broker для представления узла агента службы.
  4. ZooKeeper:ZooKeeper да Служба распределенной координации, используемая в Kafka (кластере) для обслуживания. Статус Kafka (кластера) и информация метаданных, такая как информация о теме и распределении разделов, группа потребителей и смещение потребителя, а также другая информация. Кафка 2.8.0 После этого Кафка представил KRaft(Kafka Raft), которая обеспечивает новый встроенный механизм консенсуса для замены Zookeeper зависимость. В это время Кафка можно разделить Zookeeper Работает автономно, но требует настройки KRaft Просто контролер, Кафка Служба по умолчанию все еще должна сотрудничать Zookeeper бег.

3. Что делать с разными типами сообщений?

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

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

но добавил type После месторождения последующее обслуживание и расширение неудобны, и type тем больше,Чем сложнее код суждения в кодексе,представлять себе:В сложном проекте существуют тысячи категорий типов сообщений, поэтому наш код суждения также должен записывать тысячи суждений if-else.?Как это решить??

На данный момент нам нужен «механизм классификации сообщений», который в Kafka называется «Тема», как показано на следующем рисунке:

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

Broker и Topic отношение:один Broker может содержать несколько Topic

4. Как обеспечить высокую производительность?

4.1 Фрагментация данных

Чтобы улучшить производительность Kafka, вам необходимо горизонтально расширить количество брокеров, как показано на следующем рисунке:

В Kafka Topic хранится с помощью Partition, поэтому правильный процесс его взаимодействия выглядит следующим образом:

Основные знания в этом разделе:

  1. Partition(Раздел)Сразудана самом деле хранит данныеочередь сообщений
  2. С кластерами и несколькими Partition После этого Кафка Данные можно хранить в осколках, при этом производительность значительно повышается. Что да Шардинг данных?Шардинг dataStorage — технология, которая хранит большие объемы данных рассредоточенно по множеству разных мест или устройств.

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

Вот некоторые особенности и преимущества хранения данных Шардинг:

  1. Улучшите производительность:За счет децентрализации хранения данных,Запросы данных могут обрабатываться параллельно,Тем самым ускоряется чтение и запись данных. Например,существуютодин в распределенной базе данных,Разные шарды могут отвечать на запросы одновременно,Сокращение общего времени ответа.
  2. Повышение масштабируемости:Когда объем данных продолжает расти,Можно легко добавить больше осколков для увеличения емкости хранилища.,Без необходимости масштабной реконструкции всей системы.
  3. Избегайте одноточечных узких мест в производительности:Шардинг Данные могут сделать нагрузку хранения и доступа к данным более равномерно распределенной на нескольких узлах, чтобы один узел не стал узким местом в производительности. 4.2 Группа потребителей Если группы потребителей нет, то один Topic Его может потреблять только один потребитель, и производительность будет очень низкой, как показано на рисунке ниже:
  4. Параллельное выполнение:Воляодин Сообщения внутри темы распространяются среди нескольких потребителей.одновременноиметь дело с,Улучшена производительность потребления сообщений.
  5. Хорошая отказоустойчивость:Если потребитель в группе выходит из строя,Kafka Он может автоматически перераспределять разделы, отвечающие за потребителя, среди других работоспособных потребителей, чтобы гарантировать, что сообщения не будут пропущены.
  6. Поддержка нескольких моделей потребления:Путем настройки конфигурации группы потребителей,МожетРеализуйте различные модели потребления,Такие как режим публикации и подписки (один ко многим) и режим очереди (один к одному). существовать в режиме публикации-подписки,одно сообщение может быть использовано несколькими группами потребителей одновременно,Потребители в каждой группе потребителей обмениваются сообщением в режиме очереди;,Одно сообщение может быть использовано только потребителем из одной группы потребителей. Эта гибкость позволяет Kafka адаптироваться к различным потребностям бизнеса и сценариям обработки данных.
  7. динамическое расширение:По мере того, как ваш бизнес увеличивается или уменьшается,Можетдинамически увеличивать или уменьшать Потреблениечлены группы。Вновь присоединившиеся потребители автоматически извлекут данные из существующих копий и начнут использовать их.;Потребители, которые уйдут, автоматически почувствуют и прекратят потребление.。Такая динамическая масштабируемость позволяет Kafka Возможность гибкого масштабирования по мере роста вашего бизнеса.иметь дело сспособность。группа потребителейи Разделотношение:Потребители (количество) <= Количество разделов

5. Как обеспечить высокую доступность?

Узел резервного копирования раздела называется узлом Follower, а узел, отвечающий за чтение и запись данных, называется узлом Leader.

Существует два типа разделов Kafka:

  1. Leader Partition:главный узел,Отвечает за запись и чтение данных.
  2. Follower Partition:узел реплики,Используется для резервного копирования данных и выбора разделов после выхода из строя главного узла.,Гарантировано Kafka Высокая доступность услуг. Краткое содержание Кафка Окончательная композиция архитектуры выглядит следующим образом:
  3. Продюсер:Ответственный Воля Сообщение отправлено на Kafka кластер.
  4. Потребительская группа:используется для реализацииодин Темасообщение в обработкеодновременно Потреблениеи Механизм балансировки нагрузки。
  5. Потребитель:Ответственный за Kafka Чтение и использование сообщений в кластере.
  6. Маклер:Kafka Сервер (Кафка Service), отвечающий за хранение и пересылку сообщений.
  7. Тема:Логическая классификация сообщений,Продюсеры отправляют сообщения на определенные темы,Потребители подписываются на сообщения определенной темы.
  8. Раздел:тема Можетразделен на несколько Раздел,каждый Разделдаодинупорядоченный、Неизменяемая последовательность сообщений。Раздел Можетраспределенныйсуществоватьдругой broker для достижения горизонтального расширения. Разделы делятся на Leader Раздел, и Follower Раздел.
  9. Zookeeper:для управления Broker Метаданные кластера,нравиться Разделраспространять、выборы лидера、Группа потребителей и зачет потребителей и другая информация и т. д.

Эта статья была включена на мой сайт интервью. www.javacn.site,Включенное содержимое: Redis, JVM, одновременно, одновременно, MySQL, Spring, Spring. MVC、Spring Boot、Spring Облако, MyBatis, шаблоны проектирования, очередь сообщений и другие модули.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose