Репортаж от Wedoany,Компания Cloudflare представила сервис консенсуса под названием Meerkat (сурикат), который помогает сервисам в более чем 330 центрах обработки данных по всему миру считывать и изменять согласованное состояние плоскости управления. Даже при сбоях в отдельных центрах обработки данных или каналах связи система остаётся доступной для записи.

Из-за склонности интернета к сбоям и задержкам в очередях создание глобально согласованной и доступной системы данных представляет собой сложную задачу. Сервис Meerkat использует алгоритм консенсуса QuePaxa, который, подобно другим аналогичным алгоритмам, позволяет группе машин достигать согласия по одной и той же последовательности значений, пока большинство машин работают исправно и могут обмениваться данными.
QuePaxa не требует единого авторитетного лидера для обеспечения прогресса. В период так называемой «тирании тайм-аутов» в Cloudflare любая реплика или нелидер может продолжать выполнять операции записи. Архитектурно разработчик запрашивает набор реплик Meerkat и указывает расположение центров обработки данных, а Meerkat отвечает за их размещение. Клиент отправляет запрос приложения любой реплике, которая преобразует запрос в событие в общем журнале консенсуса и возвращает ответ. Каждая реплика хранит записи журнала решений в одинаковом порядке; некоторые реплики могут временно отставать. Приложения, построенные на основе Meerkat, такие как хранилища ключей-значений или системы аренды, считывают журнал и на его основе формируют собственное состояние.
Cloudflare поясняет, что из-за отсутствия обязательного лидера система не становится недоступной или деградированной из-за одной реплики, и не требуется проведение выборов лидера. Предложения, одновременно выдвигаемые разными репликами, конструктивно взаимодействуют друг с другом, что идеально подходит для сети Cloudflare, где задержки могут резко меняться. Компания утверждает, что провела несколько концептуальных проверок с участием до 50 глобально распределённых реплик. В ходе этих проверок лидеры многократно выходили из строя, но кластер продолжал работу, а уровень ошибок не увеличивался.
В настоящее время Meerkat ещё не введён в эксплуатацию и остаётся внутренним сервисом. Компания подчёркивает его ограничения: он не предназначен для создания универсальных систем данных, таких как базы данных. Все алгоритмы консенсуса имеют свою цену: задержка принятия решений пропорциональна задержке между большинством реплик. Если реплики находятся далеко друг от друга, задержка увеличивается, и этого невозможно избежать.






