Интервьюер: В чем разница между выборщиками Кафки и ES?
Интервьюер: В чем разница между выборщиками Кафки и ES?

Kafka и ES являются промежуточным программным обеспечением, используемым для обработки больших данных. Одно из них является представителем промежуточного программного обеспечения для сообщений (Kafka), а другое — представителем поисковой системы больших данных (ES). Они широко используются в области Java, не говоря уже о больших данных, но в чем связь и разница между их мастер-селекцией (выбором мастер-узла)? Дальше давайте посмотрим.

1. Основные понятия

1.1 Что такое Кафка?

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

Кластер Kafka состоит из следующего:

Примечание. Каждый брокер является экземпляром Kafka (Брокер 1 — это контроллер, который является основным брокером). В брокере есть несколько тем и несколько разделов в теме. Разделы разделены на две категории: раздел «Лидер» и раздел «Последователь». .

1.2 Что такое ЕС?

ES, полное название Elasticsearch, — это масштабируемая распределенная полнотекстовая поисковая система с открытым исходным кодом. Он может хранить и извлекать данные практически в реальном времени и обладает превосходной масштабируемостью, которую можно расширить до сотен серверов и обрабатывать данные на уровне петабайтов. Elasticsearch разработан на Java и использует Apache Lucene в качестве ядра для реализации всех функций индексирования и поиска, но скрывает сложность Lucene за счет простого API RESTful, упрощая полнотекстовый поиск.

Кластер ES состоит из:

Примечание. В кластере ES есть только один Мастер (главный узел), а остальные являются узлами данных (существуют и другие типы узлов, здесь они игнорируются). Главный узел координирует работу всего кластера. узел данных. Каждый шардинг делится на два типа: первичный сегмент и сегмент реплики (аналогично концепции секционирования в Kafka).

2. Выбор Kafka и ES

Kafka Выбор Господа означает выбор Broker в Контроллер,в то время как ES Выбор Господа означает выбор Получить кластерв Мастер, отношения между ними двумя Kafka Новая версия (2.8 после) и ES Новая версия (7.0 после),Все их стратегии выбора лидеров реализованы на основе алгоритма Рафта.

PS: Конечно, Kafka называется KRaft, и ES также расширяет возможности двухэтапных выборов на основе алгоритма Raft, но все базовые алгоритмы, на которых они основаны, — это алгоритмы Raft.

3. Что такое алгоритм Рафта?

Алгоритм Рафта — это алгоритм распределенной согласованности, в основном используемый для достижения согласованности копий данных в распределенных системах. Этот алгоритм представляет собой инженерную реализацию алгоритма Paxos. Его основная особенность — достижение согласованности данных и высокой доступности распределенных систем с помощью относительно простых алгоритмов.

Суть алгоритма Рафта — голосование посредством выборов. Меньшинство подчиняется принципу большинства (принцип большинства голосов). Если за определенный узел голосуют за Лидера, то он является новым Лидером.

существовать Raft в алгоритме,Все узлы в распределенной системе разделены на три роли: Лидер, Ведомый и Кандидат.,Преобразование этих трех тождеств происходит следующим образом:

  1. leader -> follower:если leader Если обнаружится, что в нынешней системе появился более крупный термин, он «сдастся» и активно отречется от престола, чтобы стать новым лидером. последователь. здесь leader Способы достижения большего срока владения включают в себя:
    1. К follower Отправляя запрос на синхронизацию журналов, начните с follower полученный из параметров ответа.
    2. От нового лидера получен контрольный сигнал или запрос на синхронизацию журнала.
    3. Получил больший срок candidate запрос на агитацию.
  2. follower -> candidate:leader Нужен обычный К follower Отправьте пульс, чтобы сообщить, что вы все еще здоровы. если follower Не получено по истечении определенного периода времени leader При появлении сердцебиения статус переключится на кандидат, существующий, добавлен к текущему сроку 1 В рамках предвыборной кампании была начата кампания, направленная на то, чтобы попытаться заполнить это место.
  3. candidate -> follower:candidate Во время избирательного процесса вам будет возвращена стоимость, если возникнут следующие две ситуации: follower:
    1. Большинство проголосовало против.
    2. В период выборов он получил письмо, срок которого превышает или равен сроку его выборов. leader Запрос пришел.
  4. candidate -> leader:candidate Во время выборов, если большинство проголосует за, переключитесь на leader。
  5. candidate -> candidate:candidate Процесс кампании имеет временной порог. Если в течение установленного срока не будет достигнуто действительное заключение (большинство соглашается или отвергает), решение будет сохранено. candidate личность, добавьте 1 к термину кампании и запустите новый раунд кампании. 4.Плотный процесс выборов Плот Процесс выбора алгоритма показан на рисунке ниже:
    image.png
    image.png
    добрый:
  6. Кандидаты голосуют за первоначального лидера
    1. Если термин меньше самого себя, отклоните его и восстановите последний термин.
    2. Если срок больше самого себя, отречение является последователь, следовать follower режим обработки запроса.
  7. Участник кампании голосует за последователя
    1. если срок позади,Отклонить запрос,И ответьте на свой срок полномочий.
    2. Если срок больше вашего, определите, достаточно ли нов последний журнал синхронизации. Если он новее вашего, проголосуйте за кандидата. Если он не новее вашего, отклоните его.
  8. кандидат голосует за кандидата
    1. если leader Термин больше или равен самому себе, согласитесь с этим голосованием и верните его. последователь, следовать follower Шаблон обрабатывает запрос.
    2. если leader Если термин меньше вашего, отклоните его и ответьте своим последним термином.

Каждый кандидат выбирает нового кандидата на основе вышеуказанных голосов. лидер, если есть лидер, набравший более половины голосов, он будет повышен до нового leader,И синхронизировать это сообщение с другими узлами. В противном случае будет открыт новый тур голосования.,чтобы предотвратить постоянное голосование,Будет ли открыт новый тур голосования?,Установить случайное время ожидания,èМеханизм воздержания после определенного количества неудачных голосов,обеспечить беспрепятственное завершение голосования.

Мысли после занятий

Какие изменения и обновления внес Кафка в алгоритм Raft? Какие изменения и обновления были внесены ES в алгоритм Raft?

ссылка & Благодарности

«Г-н Сяо Сюй»

Эта статья была включена на мой сайт интервью. 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