Сервисы координации

Чтобы организовать репликацию данных и выполнение распределенных DDL-запросов (ON CLUSTER) в ADQM, при создании кластера необходимо настроить и подключить один из сервисов координации:

  • Apache ZooKeeper — известный сервис с открытым исходным кодом для синхронизации и координации распределенных систем.

    ZooKeeper реализован на языке Java, имеет простую и эффективную модель данных. Используемый в ZooKeeper алгоритм координации ZAB (ZooKeeper Atomic Broadcast) обеспечивает линеаризуемость операций записи, но не гарантирует линеаризуемость операций чтения, так как каждый узел ZooKeeper выполняет чтение локально.

  • ClickHouse Keeper — альтернативный сервис координации, предоставляющий совместимый с ZooKeeper клиент-серверный протокол.

    ClickHouse Keeper реализован на языке C++ и имеет ту же модель данных, что и ZooKeeper. Используемый алгоритм RAFT предоставляет лучшие гарантии согласованности по сравнению с ZooKeeper — опционально позволяет достичь линеаризуемости чтения. ClickHouse Keeper можно использовать как равноценную замену ZooKeeper, установив его на отдельные серверы, или как внутреннюю часть сервера ClickHouse.

Общие рекомендации по выбору сервиса координации в зависимости от требований к системе:

  • Для тестовых или небольших кластеров можно использовать внутренний ClickHouse Keeper, установленный на тех же серверах, что и ClickHouse.

  • Для реальных больших систем рекомендуется устанавливать ClickHouse Keeper или ZooKeeper на отдельные серверы.

  • Если у вас уже есть настроенный кластер ZooKeeper, можно использовать его для кластера ADQM.

ВАЖНО
  • Так как снепшоты и логи ClickHouse Keeper имеют несовместимый с ZooKeeper формат, при миграции кластера ADQM с ZooKeeper на ClickHouse Keeper необходимо сконвертировать данные и перенести их вручную.

  • Межсерверный протокол ClickHouse Keeper также несовместим с ZooKeeper, поэтому нельзя создать кластер, который одновременно использует ZooKeeper и ClickHouse Keeper.

Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней