Алгоритмы консенсуса позволяют множеству узлов в распределённой системе прийти к согласию относительно одного значения или последовательности операций, даже если некоторые узлы выходят из строя. Они являются фундаментом для построения надёжных распределённых баз данных и сервисов координации.
Paxos — это основополагающий протокол консенсуса, который математически доказано корректен. Однако он печально известен своей сложностью в понимании и практической реализации.
Ключевые характеристики:
Prepare, Promise, Accept, AcceptedRaft был специально разработан как более понятная альтернатива Paxos, без ущерба для корректности.
Он разбивает задачу консенсуса на три отдельные подзадачи:
| Аспект | Paxos | Raft |
|---|---|---|
| Понятность | Сложный | Проще по замыслу |
| Модель лидера | Неявная | Явный единственный лидер |
| Управление логом | Недоспецифицировано | Строго определено |
| Применение | Академическое, фундаментальное | Широко используется на практике |
Оба алгоритма используются в распределённых системах, таких как хранилища консенсуса и реплицируемые базы данных:
etcd и CockroachDBGoogle Chubby и SpannerВыбор обычно сводится к сложности реализации — Raft предпочитают, когда приоритетом являются простота понимания и поддерживаемость кода.
Paxos работает через четыре отчетливых фазы: Prepare, Promise, Accept и Accepted, тогда как Raft явно разделяет консенсус на три подпроблемы: выборы лидера, репликация логов и безопасность.
Новый — ещё не проверен сообществом
Вы