Kafka и ES являются промежуточным программным обеспечением, используемым для обработки больших данных. Одно из них является представителем промежуточного программного обеспечения для сообщений (Kafka), а другое — представителем поисковой системы больших данных (ES). Они широко используются в области Java, не говоря уже о больших данных, но в чем связь и разница между их мастер-селекцией (выбором мастер-узла)? Дальше давайте посмотрим.
Kafka — это платформа распределенной потоковой обработки, разработанная и поддерживаемая корпорацией LinkedIn, а затем ставшая частью Apache Software Foundation. Он в основном предназначен для обработки данных в реальном времени и представляет собой высокопроизводительную распределенную систему обмена сообщениями публикации-подписки.
Кластер Kafka состоит из следующего:
Примечание. Каждый брокер является экземпляром Kafka (Брокер 1 — это контроллер, который является основным брокером). В брокере есть несколько тем и несколько разделов в теме. Разделы разделены на две категории: раздел «Лидер» и раздел «Последователь». .
ES, полное название Elasticsearch, — это масштабируемая распределенная полнотекстовая поисковая система с открытым исходным кодом. Он может хранить и извлекать данные практически в реальном времени и обладает превосходной масштабируемостью, которую можно расширить до сотен серверов и обрабатывать данные на уровне петабайтов. Elasticsearch разработан на Java и использует Apache Lucene в качестве ядра для реализации всех функций индексирования и поиска, но скрывает сложность Lucene за счет простого API RESTful, упрощая полнотекстовый поиск.
Кластер ES состоит из:
Примечание. В кластере ES есть только один Мастер (главный узел), а остальные являются узлами данных (существуют и другие типы узлов, здесь они игнорируются). Главный узел координирует работу всего кластера. узел данных. Каждый шардинг делится на два типа: первичный сегмент и сегмент реплики (аналогично концепции секционирования в Kafka).
Kafka Выбор Господа означает выбор Broker в Контроллер,в то время как ES Выбор Господа означает выбор Получить кластерв Мастер, отношения между ними двумя Kafka Новая версия (2.8 после) и ES Новая версия (7.0 после),Все их стратегии выбора лидеров реализованы на основе алгоритма Рафта.。
PS: Конечно, Kafka называется KRaft, и ES также расширяет возможности двухэтапных выборов на основе алгоритма Raft, но все базовые алгоритмы, на которых они основаны, — это алгоритмы Raft.
Алгоритм Рафта — это алгоритм распределенной согласованности, в основном используемый для достижения согласованности копий данных в распределенных системах. Этот алгоритм представляет собой инженерную реализацию алгоритма Paxos. Его основная особенность — достижение согласованности данных и высокой доступности распределенных систем с помощью относительно простых алгоритмов.
Суть алгоритма Рафта — голосование посредством выборов. Меньшинство подчиняется принципу большинства (принцип большинства голосов). Если за определенный узел голосуют за Лидера, то он является новым Лидером.
существовать Raft в алгоритме,Все узлы в распределенной системе разделены на три роли: Лидер, Ведомый и Кандидат.,Преобразование этих трех тождеств происходит следующим образом:
Каждый кандидат выбирает нового кандидата на основе вышеуказанных голосов. лидер, если есть лидер, набравший более половины голосов, он будет повышен до нового leader,И синхронизировать это сообщение с другими узлами. В противном случае будет открыт новый тур голосования.,чтобы предотвратить постоянное голосование,Будет ли открыт новый тур голосования?,Установить случайное время ожидания,èМеханизм воздержания после определенного количества неудачных голосов,обеспечить беспрепятственное завершение голосования.
Какие изменения и обновления внес Кафка в алгоритм Raft? Какие изменения и обновления были внесены ES в алгоритм Raft?
«Г-н Сяо Сюй»
Эта статья была включена на мой сайт интервью. www.javacn.site,Включенное содержимое: Redis, JVM, одновременно, одновременно, MySQL, Spring, Spring. MVC、Spring Boot、Spring Облако, MyBatis, шаблоны проектирования, очередь сообщений и другие модули.