TGViewer
ТехнофITнес | Никита Ульшин ТехнофITнес | Никита Ульшин @tech_fit · 262 subscribers
Post #60 309
Как сервера договариваются друг с другом: алгоритм распределённого консенсуса Raft

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

К счастью, сама проблема распределённого консенсуса в целом понятна, и уже существуют алгоритмы, которые его реализуют (естественно, не бесплатно). Одним из популярных алгоритмов является Raft, и именно ему посвящена сегодняшняя статья.

⭐️ Интересные идеи

➡️ Raft работает на основе лога изменений состояния (напоминает Event Sourcing). Всегда есть лидер, который отвечает за управление этим распределённым логом. При нормальной работе лидер всегда один.

➡️ Raft делит время на отрезки произвольной длины, называемые сроками. Срок – это период, в течение которого выбранный лидер исполняет свои обязанности. По окончании срока выборы происходят заново, и лидер может смениться.

➡️ Лидер принимает запросы на запись от клиентов и реплицирует их на фолловеров. Когда большинство фолловеров подтверждают успешное сохранение записи, лидер считает запись закоммиченной и отправляет клиенту сообщение об успешном сохранении. Если фолловер не отвечает, лидер будет повторять попытки записи до бесконечности.

➡️ Благодаря тому, что данные хранятся в виде append-only log, работа алгоритма становится очень надёжной: не возникает конфликтов при изменении записей.

➡️ Писать собственную реализацию Raft не стоит: уже есть готовые библиотеки (например, от HashiCorp). Либо можно воспользоваться базой данных, которая использует Raft под капотом (например, etcd).

Приятного чтения!

➖➖➖➖➖➖➖➖➖➖➖
// Понравился пост? Ставь 💛
// И обязательно подпишись на канал, чтобы не пропустить новые статьи
  • 👍 3
  • ⚡ 2
  • 🔥 2
  • ❤ 1
More from @tech_fit
  1. Oct 13, 2025Почему Uber переехал с Postgres на MySQL Интересная статья о том, какие проблемы в Postgre…
  2. Oct 6, 2025Паттерн Bulkhead Продолжаю читать статьи про паттерны отказоустойчивых приложений. На очер…
  3. Sep 29, 2025Микросервисы не подходят стартапам Интересная статья, которая в очередной раз напоминает о…
  4. Aug 25, 2025Сколько партиций в Kafka мне нужно? Партиции — это одна из важнейших частей Kafka. С их по…
  5. Aug 18, 2025Роадмап архитектора Как вы знаете, иногда я тут делюсь не обзорчиками, а вполне прикладным…
  6. Aug 11, 2025Нельзя пожертвовать устойчивостью к разделению Отличная статья, которая показывает, почему…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →