Иллюстрирование Kafka: эволюция и обновление архитектуры Kafka!
Иллюстрирование Kafka: эволюция и обновление архитектуры Kafka!
Понимание архитектуры Kafka означает овладение основными знаниями о Kafka. Kafka — самая известная и популярная система обмена сообщениями и компонент потоковой обработки в отрасли, которую часто можно увидеть в интервью и в повседневной работе. Итак, сегодня давайте поговорим об архитектурной эволюции и обновлении Kafka и позволим вам ясно понять это с помощью диаграмм.
1. Первые впечатления Кафки
Kafka был первоначально разработан корпорацией LinkedIn, а затем стал проектом с открытым исходным кодом Apache Software Foundation. Основная цель его разработки — предоставить высокопроизводительную, надежную и распределенную систему обмена сообщениями.
2. Инфраструктура Кафки
Простейшая инфраструктура Kafka выглядит следующим образом:
Кафка в основном состоит из следующих 4 частей:
Продюсер:отправитель сообщения,Продюсеры несут ответственность за создание сообщений,Затем доставьте его Кафке (Брокеру).
Потребитель:Получатель,Потребители подключаются к Kafka и получать сообщения, а затем выполнять соответствующую обработку бизнес-логики.
Маклер:один Broker можно просто рассматривать как один независимый Kafka сервисный узел или Kafka Экземпляр службы. В большинстве случаев также возможно Broker рассматривается как один Kafka Сервер, предполагается, что на этом сервере развернут только один сервер. Kafka Пример. один или более Broker состоит из одного Kafka кластер. Вообще говоря, мы больше привыкли использовать строчные буквы. broker для представления узла агента службы.
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, поэтому правильный процесс его взаимодействия выглядит следующим образом:
Основные знания в этом разделе:
Partition(Раздел)Сразудана самом деле хранит данныеочередь сообщений。
С кластерами и несколькими Partition После этого Кафка Данные можно хранить в осколках, при этом производительность значительно повышается. Что да Шардинг данных?Шардинг dataStorage — технология, которая хранит большие объемы данных рассредоточенно по множеству разных мест или устройств.
существовать, когда объем данных огромен,Чтобы повысить эффективность хранения данных, производительность доступа и масштабируемость,Разделить данные на более мелкие части,Затем хранилища существуют отдельно в разных узлах или устройствах хранения.
Вот некоторые особенности и преимущества хранения данных Шардинг:
Улучшите производительность:За счет децентрализации хранения данных,Запросы данных могут обрабатываться параллельно,Тем самым ускоряется чтение и запись данных. Например,существуютодин в распределенной базе данных,Разные шарды могут отвечать на запросы одновременно,Сокращение общего времени ответа.
Повышение масштабируемости:Когда объем данных продолжает расти,Можно легко добавить больше осколков для увеличения емкости хранилища.,Без необходимости масштабной реконструкции всей системы.
Избегайте одноточечных узких мест в производительности:Шардинг Данные могут сделать нагрузку хранения и доступа к данным более равномерно распределенной на нескольких узлах, чтобы один узел не стал узким местом в производительности. 4.2 Группа потребителей Если группы потребителей нет, то один Topic Его может потреблять только один потребитель, и производительность будет очень низкой, как показано на рисунке ниже:
Параллельное выполнение:Воляодин Сообщения внутри темы распространяются среди нескольких потребителей.одновременноиметь дело с,Улучшена производительность потребления сообщений.
Хорошая отказоустойчивость:Если потребитель в группе выходит из строя,Kafka Он может автоматически перераспределять разделы, отвечающие за потребителя, среди других работоспособных потребителей, чтобы гарантировать, что сообщения не будут пропущены.
Поддержка нескольких моделей потребления:Путем настройки конфигурации группы потребителей,МожетРеализуйте различные модели потребления,Такие как режим публикации и подписки (один ко многим) и режим очереди (один к одному). существовать в режиме публикации-подписки,одно сообщение может быть использовано несколькими группами потребителей одновременно,Потребители в каждой группе потребителей обмениваются сообщением в режиме очереди;,Одно сообщение может быть использовано только потребителем из одной группы потребителей. Эта гибкость позволяет Kafka адаптироваться к различным потребностям бизнеса и сценариям обработки данных.
динамическое расширение:По мере того, как ваш бизнес увеличивается или уменьшается,Можетдинамически увеличивать или уменьшать Потреблениечлены группы。Вновь присоединившиеся потребители автоматически извлекут данные из существующих копий и начнут использовать их.;Потребители, которые уйдут, автоматически почувствуют и прекратят потребление.。Такая динамическая масштабируемость позволяет Kafka Возможность гибкого масштабирования по мере роста вашего бизнеса.иметь дело сспособность。группа потребителейи Разделотношение:Потребители (количество) <= Количество разделов。
5. Как обеспечить высокую доступность?
Узел резервного копирования раздела называется узлом Follower, а узел, отвечающий за чтение и запись данных, называется узлом Leader.
Существует два типа разделов Kafka:
Leader Partition:главный узел,Отвечает за запись и чтение данных.
Follower Partition:узел реплики,Используется для резервного копирования данных и выбора разделов после выхода из строя главного узла.,Гарантировано Kafka Высокая доступность услуг. Краткое содержание Кафка Окончательная композиция архитектуры выглядит следующим образом:
Продюсер:Ответственный Воля Сообщение отправлено на Kafka кластер.
Потребительская группа:используется для реализацииодин Темасообщение в обработкеодновременно Потреблениеи Механизм балансировки нагрузки。
Потребитель:Ответственный за Kafka Чтение и использование сообщений в кластере.
Маклер:Kafka Сервер (Кафка Service), отвечающий за хранение и пересылку сообщений.
Тема:Логическая классификация сообщений,Продюсеры отправляют сообщения на определенные темы,Потребители подписываются на сообщения определенной темы.
Раздел:тема Можетразделен на несколько Раздел,каждый Разделдаодинупорядоченный、Неизменяемая последовательность сообщений。Раздел Можетраспределенныйсуществоватьдругой broker для достижения горизонтального расширения. Разделы делятся на Leader Раздел, и Follower Раздел.
Zookeeper:для управления Broker Метаданные кластера,нравиться Разделраспространять、выборы лидера、Группа потребителей и зачет потребителей и другая информация и т. д.
Эта статья была включена на мой сайт интервью. www.javacn.site,Включенное содержимое: Redis, JVM, одновременно, одновременно, MySQL, Spring, Spring. MVC、Spring Boot、Spring Облако, MyBatis, шаблоны проектирования, очередь сообщений и другие модули.