← На главную

Cloudflare создаёт Meerkat — консенсус без лидера для control-plane

08.07.2026 13:18 · hackernews

Cloudflare строит новый распределённый консенсус-сервис под названием Meerkat. В его основе лежит алгоритм QuePaxa, опубликованный в 2023 году исследователями из EPFL. Зачем это нужно? Внутренние сервисы Cloudflare работают в 330+ дата-центрах по всему миру. Им нужна сильная согласованность данных (линеаризуемость) — чтобы любой клиент после записи гарантированно видел актуальное значение. Проблема в том, что сеть Cloudflare — это весь интернет, а интернет непредсказуем: серверы падают, кабели перерубают, задержки скачут.

Стандартные алгоритмы вроде Raft плохо подходят для таких wide-area сетей. Raft полагается на единого лидера. Только лидер может принимать записи. Если лидер падает или тормозит — система встаёт до выборов нового лидера через таймауты. Конфигурация этих таймаутов в сети с плавающей задержкой — сущий ад, и Cloudflare не раз с этим сталкивалась.

QuePaxa решает эту проблему иначе. У него нет обязательного лидера. Любая реплика может инициировать запись в любой момент. Есть номинальный лидер, но он не обязателен — он просто делает запись быстрее (за один раунд вместо трёх). Если лидер упал — ничего страшного, остальные продолжают работать. Если несколько реплик одновременно предлагают свои варианты для одного слота в логе — они не конфликтуют, а совместно решают, какое значение зафиксировать. Прогресс никогда не останавливается из-за таймаута.

Архитектура Meerkat выглядит так: разработчик запрашивает кластер из реплик, указывая желаемые дата-центры. Клиент шлёт запрос (например, put или get) любой реплике. Реплика кладёт его в лог событий через алгоритм консенсуса. Все реплики ведут идентичный лог. Приложение (например, key-value store) читает этот лог и строит своё состояние. Даже чтение (get) требует записи в лог — это гарантирует линеаризуемость: если один клиент написал v11, а другой сразу читает с другой реплики, он увидит именно v11, потому что читающая реплика будет вынуждена сначала доставить себе пропущенное событие.

Ограничение у Meerkat одно — задержка. На запись уходит от одного до трёх сетевых раундов между большинством реплик. Если реплики разбросаны по миру, латентность будет высокой. Поэтому Meerkat не годится для баз данных общего назначения. Его ниша — служебные данные control-plane: кто сейчас лидер базы данных, где лежит модель AI и так далее. Такие данные пишут редко, но требуют абсолютной согласованности.

Проект пока экспериментальный. Cloudflare запускала proof-of-concept на 50 репликах по всему миру — система стабильно работала, даже когда лидеры постоянно «падали». В планах на год — серия постов: как именно работает QuePaxa, как формально верифицируется реализация на Rust, как работает управление кластером и как ищутся баги с помощью детерминированного симуляционного тестирования.

Читать оригинал →