предисловие
Raft
такжеалгоритм консенсуса,иPaxos
Цель та же. Но у него есть другое имя -Простой для понимания алгоритм консенсуса.Paxos
иRaft
все для достиженияпоследовательностьпроизведено. Этот процесс похож на выборы.Кандидатнужно убедитьбольшинство избирателей(Сервер) проголосуйте за него и следуйте его действиям после выбора.Paxos
иRaft
Разница в выборахКонкретный процессразные.
текст
Мелкий измельчитель
Перед тем, как перейти к основной теме, я поделюсь с вами историей в «Дивергентном мышлении в математике», где с разных точек зрения мы поймем разницу в понимании проблемы.
Вопрос: Два человека, А и Б, по очереди раскладывают на круглом столе черные и белые фигуры го, по одной, причем фигуры не должны перекрывать друг друга. Как мне сказать, чтобы выиграть?
Этот вопрос имеет два значения: во-первых, есть ли способ гарантировать победу? Во-вторых, если да, то как это доказать?
Приведенная выше картинка ответила на этот вопрос, то есть победит первая линия, здесь используйте три разных способа объяснения:
-
Предположим, что стол размером с шахматную фигуру.
-
Если стол бесконечен, первый ход займет центр круга. Поскольку круг является симметричной фигурой, пока противник может найти место, куда его поставить, вы всегда можете найти место, чтобы поставить его по другую сторону симметрии.
-
Один круг можно нарисовать из нескольких маленьких кругов одинакового диаметра, касающихся друг друга.
Три разных способа мышления постепенно усложняют разборчивость.
-
Первыйминималистское мышление, но математическинесерьезноиз.
-
Второйограничить мышление, в сочетании с первымМатематическая индукция, что математическитщательныйиз.
-
ТретийОбразное мышление,использовалконцепция геометрии, но трудно понять людям без базовых знаний геометрии.
Что такое Рафт-протокол
Raft
Соглашение будетServer
Процессы делятся на три категории, а именноLeader
,Candidate
,Follower
. ОдинServer
Процесс может быть только одним изтип, но это не исправлено. В разное время она может иметь разные виды,Server
Как изменится тип процесса, будет объяснено позже.
вRaft
В кластере, организованном по протоколу, есть три типа ролей:
- Лидер
- Последователь (масса)
- Кандидат
Как и в демократическом обществе, лидеры избираются всеобщим голосованием. не запустилсялидер, во всех кластерахучастникобамассы, то начнется первый тур выборов. во время всеобщих выбороввсе массыможет участвовать в выборах, то роль всех масс становитсякандидат, срок полномочий лидера начинается после избрания лидера демократическим голосованием, а затем выборы заканчиваются.лидеризкандидатизменился обратнороль толпыПодчиняйтесь лидеру.
Вот концепция"срок полномочий", с точки зренияTerm
Выражать. оRaft
Основных понятий и терминологии протокола очень много, и они очень хорошо соответствуют реальной демократической системе, поэтому их легко понять.
Схема перехода трех типов ролей выглядит следующим образом, что легко понять в сочетании с последующим процессом выборов.
Процесс избрания лидера
При минималистском мышлении минимальнаяRaft
Потребности демократического кластератри участника(Как показано ниже:A
,B
,C
), так что возможно большинство голосов.
начальное состояниеABC
обаFollower
, а затем инициировать выборы. В это время естьтривозникает возможная ситуация. Первые два на следующем рисунке могут быть выбраныLeader
, третий показывает, чтоЭтот раунд голосования недействителен(Split Votes
). В третьем случае каждая партия проголосовала за себя, и ни одна из партий не получила большинства. послекаждый участникСделай перерыв(Election Timeout
) повторно инициировать голосование до тех пор, пока одна из сторон не получит большинства. Тут главное случайностьtimeout
, сначала изtimeout
Партия, возобновившая голосование вtimeout
другие двазапросить голосование, то он может голосовать только за себя, что приводит к быстрому соглашению.
избиратьLeader
Задний,Leader
пройти черезобычныйвсеFollower
Отправитьинформация о сердцебиениисохранить свое господство. какFollower
не получил какое-то времяLeader
изсердцебиение, считается, чтоLeader
мог повесить трубку, а потом снова начатьвыборыпроцесс.
Влияние лидера на последовательность
Raft
протоколсильная зависимость Leader
узлаДоступность, чтобы гарантировать, что кластерсогласованность данных.поток данныхтолько отLeader
Узел вFollower
Перенос узла. Конкретный процесс выглядит следующим образом:
-
когда
Client
к кластеруLeader
узелотправить данныеЗадний,Leader
узелполученные данныевнезафиксированный статус(Uncommitted
). -
тогда
Leader
узел будетодновременновсеFollower
узелскопировать данныеижду ответа. -
по крайней мере в кластеребольше половиныузелПолучилаПолучив данные,
Leader
сноваClient
Подтвердить данныеПолучила. -
однажды, чтобы
Client
отправить данные получитьAck
После ответа указывает, что на этот разстатус данныхВходитьОтправлено(Committed
),Leader
перенаправление узлаFollower
Узел отправляет уведомление, чтобы сообщитьСтатус данных отправлен.
В этом процессеглавный узелможет быть влюбой этапповесить трубку, см.Raft
Как соглашение гарантирует различные этапысогласованность данныхиз.
1. Сценарий 1
Излишне говорить, что до того, как данные достигнут узла-лидера, лидер зависает на этом этапе, не влияя на согласованность.
2. Сценарий 2
Данные поступают на узел-лидер, но не реплицируются на узел-ведомый.
этот этапLeader
повесить трубку, данные принадлежатнезафиксированный статус,Client
не получитAck
подумал бытайм-аут не удалсяБезопасно инициироватьПовторить попытку.
Follower
На узле таких данных нет,переизбраниеЗаднийClient
Повторить попыткуОтправить повторноможет быть успешным. оригинальныйLeader
узелвосстанавливатьсяпозже какFollower
Присоединиться к кластеру, перезапустить стекущий срокновыйLeader
гдеСинхронные данные, вынуждены держать иLeader
Данные согласованы.
3. Сценарий 3
Данные поступают на узел-лидер и успешно реплицируются на все узлы-последователи, но ведомый еще не ответил ведущему.
этот этапLeader
повесить трубку, хотя данные естьFollower
узел находится внезафиксированный статус(Uncommitted
),нобыть последовательнымиз. переизбратьLeader
можно закончить позжепредставление данных.
В настоящее времяClient
Поскольку вы не знаете, была ли отправка успешной или нет, вы можете повторить отправку. Ввиду этой ситуацииRaft
ТребоватьRPC
выполнение запросаидемпотентность, то есть добитьсяВнутренний механизм дедупликации.
4. Сценарий 4
Данные поступают на узел-лидер и успешно копируются на часть узлов-последователей, но эта часть узлов-последователей еще не ответила ведущему.
этот этапLeader
повесить трубку, данные естьFollower
узел находится внезафиксированный статус(Uncommitted
)инепоследовательный.
Raft
Протокол требует, чтобы голоса могли быть поданы только за тех, ктоПоследние данныеузел. Таким образом, узел с последними данными будет выбран какLeader
,после этогоПринудительно синхронизировать данныек другомуFollower
,гарантироватьДанные не будут потеряныив конечном итоге последовательный.
5. Сценарий 5
Когда данные достигают узла-лидера, они успешно реплицируются на все или большинство узлов-последователей.Данные находятся в состоянии «Отправлено» на ведущем узле, но в состоянии «Не отправлено» на ведомом.
этот этапLeader
повесить трубку,переизбратьновыйLeader
Процесс и этапы постобработки3
Такой же.
6. Сценарий 6
Данные достигают узла-лидера и успешно реплицируются на все или большинство узлов-последователей Данные находятся в состоянии отправки на всех узлах, но еще не ответили клиенту.
этот этапLeader
Если он зависает, данные внутри кластера на самом деле ужепоследовательный,Client
Повторные попытки основаны на парах идемпотентных политик.Консистенция не влияет.
7. Сценарий 7
В ситуации расщепленного мозга, вызванной разделами сети, возникает феномен двойных лидеров.
сетевой разделоригиналLeader
узел иFollower
узлы разделены,Follower
не могу получитьLeader
изсердцебиениебудетсноваИнициировать выборы для создания новогоLeader
, затем производитДвойной лидерФеномен.
оригинальныйLeader
В одной зоне отправка данных в нее не может быть реплицирована на большинство узлов, поэтому отправка никогда не будет успешной. к новомуLeader
Представленные данные могут быть успешно отправлены.
восстановление сетипосле старогоLeader
нашел в кластереСрок обновления(Term
)новыйLeader
,ноАвтоматический переход на более раннюю версиюзаFollower
и возобновитьLeader
гдеСинхронные данныедостичь кластераДанные согласованы.
Результаты проверки
В общем, исчерпывающий анализминимальный кластер(3
node) во всех ситуациях, видно, чтоRaft
Соглашение может справиться с этим хорошоПроблемы согласованности, и его легко понять.
резюме
Paxos
АлгоритмLeslie Lamport
существует1990
Он был публично опубликован на собственном веб-сайте в 2018 году. Когда мы узнали об этом? Когда будет полезная реализация? иRaft
Алгоритм2013
Опубликовано в году, на который все ссылаютсяБиблиотека реализации Raft с открытым исходным кодом, вы можете видеть, что есть многоБиблиотека реализации с открытым исходным кодом,Этопонятностьважность.
Ссылки по теме
- Распределенная теория (1) - теорема CAP
- Распределенная теория (2) - BASE Theory
- Распределенная теория (3) - протокол 2PC
- Распределенная теория (4) — протокол 3PC
- Распределенная теория (5) - Алгоритм согласованности Paxos
- Распределенная теория (6) — Плот протокола согласованности
Добро пожаловать в публичный аккаунт: Zero One Technology Stack
Эта учетная запись будет продолжать делиться сухими товарами серверных технологий, включая основы виртуальных машин, многопоточное программирование, высокопроизводительные фреймворки, асинхронное ПО, промежуточное ПО для кэширования и обмена сообщениями, распределенные и микросервисы, материалы для обучения архитектуре и расширенные учебные материалы и статьи.