Перейти к основному содержанию
Перейти к основному содержанию

Операции Make Before Break (MBB) в ClickHouse Cloud

ClickHouse Cloud выполняет обновления и масштабирование кластеров с использованием подхода Make Before Break (MBB). При таком подходе новые реплики добавляются в кластер до удаления из него старых реплик. В отличие от подхода break-first, при котором старые реплики сначала удаляются, а затем добавляются новые.

Подход MBB имеет несколько преимуществ:

  • Поскольку ресурсы добавляются в кластер до удаления, общая емкость кластера не снижается, в отличие от подхода break-first. Разумеется, внеплановые события, такие как сбои узлов или дисков и т.п., по‑прежнему могут происходить в облачной среде.
  • Этот подход особенно полезен в ситуациях, когда кластер находится под высокой нагрузкой, поскольку он предотвращает перегрузку существующих реплик, как это могло бы произойти при подходе break-first.
  • Поскольку реплики могут добавляться быстро, без ожидания предварительного удаления старых реплик, этот подход обеспечивает более быстрое и отзывчивое масштабирование.

Изображение ниже показывает, как это может происходить для кластера с 3 репликами, в котором сервис масштабируется вертикально:

Пример диаграммы для кластера с 3 репликами, который вертикально масштабируется

В целом, MBB обеспечивает более плавное и менее нарушающее работу масштабирование и обновление по сравнению с ранее использовавшимся подходом break-first.

При использовании MBB есть несколько ключевых особенностей поведения, о которых пользователям необходимо знать:

  1. Операции MBB ожидают завершения существующих рабочих нагрузок на текущих репликах до их остановки. В настоящее время этот период установлен в 1 час, что означает, что масштабирование или обновления могут ожидать до одного часа завершения долго выполняющегося запроса на реплике, прежде чем реплика будет удалена. Кроме того, если на реплике выполняется процесс резервного копирования, ему дают завершиться, прежде чем реплика будет остановлена.
  2. Из‑за того, что есть время ожидания перед остановкой реплики, могут возникать ситуации, когда кластер может иметь больше максимального числа реплик, заданного для кластера. Например, у вас может быть сервис всего с 6 репликами, но при выполняющейся операции MBB к кластеру могут быть добавлены еще 3 реплики, что приведет к общему количеству в 9 реплик, пока старые реплики все еще обслуживают запросы. Это означает, что в течение некоторого периода времени кластер будет иметь больше, чем требуемое количество реплик. Кроме того, несколько операций MBB могут накладываться друг на друга, что приводит к накоплению реплик. Это может происходить, например, в сценариях, когда в кластер через API отправляется несколько запросов на вертикальное масштабирование. В ClickHouse Cloud реализованы проверки, ограничивающие количество реплик, которое кластер может накопить.
  3. При операциях MBB данные системных таблиц сохраняются в течение 30 дней. Это означает, что каждый раз, когда на кластере выполняется операция MBB, данные системных таблиц за 30 дней реплицируются со старых реплик на новые.

Если вы хотите узнать больше о механике операций MBB, ознакомьтесь с этой публикацией в блоге от инженерной команды ClickHouse.