НейроАгент

Реплики регионов TiKV: Пир против Хранилища

Узнайте правильную терминологию для размещения реплик регионов TiKV. Узнайте, почему PD гарантирует, что реплики не находятся на одном и том же хранилище, а не просто на разных экземплярах пир-узлов. Необходимые знания для управления кластером TiKV.

Вопрос

Какова правильная терминология для размещения реплик Region в TiKV? Согласно документации TiKV, “PD может гарантировать только то, что реплики Region не находятся на одном peer”, но следует ли заменить “peer” на “storage” для технической точности при описании того, как PD предотвращает потерю нескольких реплик при сбое единицы хранения?

НейроАгент

В архитектуре TiKV терминология различает понятия “peer” (узел-реплика) и “storage” (хранилище) для технической точности. Peer (узел-реплика) относится к реплике Region, в то время как storage (store) (хранилище) относится к физической или виртуальной единице хранения, на которой размещаются узлы-реплики. PD (Placement Driver) гарантирует, что реплики Region не размещаются на одной и той же единице хранения для предотвращения потери данных при сбое этой единицы, а не просто на одном и том же экземпляре peer.

Содержание

Понимание терминологии репликации TiKV

Архитектура TiKV использует специфическую терминологию, которая важна для понимания размещения реплик. Согласно официальной документации TiKV, “Реплика Region называется peer”. Это означает, что когда мы говорим о peer, мы имеем в виду отдельные экземпляры реплик регионов данных.

Однако требования к планированию идут глубже. Как объясняется в документации по планированию TiKV, “Ключ к этим требованиям заключается в том, что peer могут иметь одинаковую ‘позицию’, которая является наименьшей единицей для отказоустойчивости. Реплики Region не должны находиться в одной единице”.

Это различие критически важно для понимания того, как TiKV обеспечивает целостность и доступность данных.


Роль PD в размещении реплик

Placement Driver (PD) выступает в роли “мозга” кластера TiKV, принимая решения о том, где должны размещаться реплики. PD “периодически записывает информацию о кластере, принимает решения о перемещении/разделении/слиянии TiKV Region между узлами в соответствии с рабочей нагрузкой приложения и емкостями хранения” (документация TiKV).

Критически важно, что PD отвечает за “распределение Region как можно более равномерно по всем узлам в кластере”). Это включает в себя несколько ключевых операций:

  • Добавление новых реплик при необходимости
  • Удаление избыточных реплик
  • Перемещение реплик между единицами хранения для балансировки нагрузки
  • Обеспечение распределения реплик по разным доменам отказов

Конфигурация PD включает параметры такие как “max-pending-peer-count”, который “Контролирует максимальное количество ожидающих peer в одном store”, что указывает на то, что PD управляет peer в контексте единиц хранения.


Peer vs Storage: техническое различие

Вопрос о том, следует ли заменять “peer” на “storage”, затрагивает суть того, как TiKV управляет размещением реплик. Техническая точность требует понимания, что это различные концепции:

  • Peer: Экземпляр реплики Region, участвующий в протоколе согласования Raft
  • Storage/Store: Физическая или виртуальная единица хранения (узел TiKV), на которой размещаются peer

Когда в документации говорится, что “PD может гарантировать только то, что реплики Region не находятся на одном peer” (документация TiKV), это может быть введено в заблуждение без контекста. Более точно, PD гарантирует, что реплики Region не размещаются на одной и той же единице хранения/store.

Документация по планированию TiDB проясняет это: “Реплики Region не должны находиться в одной единице”. Эта “единица” относится к единице хранения/store, а не к самой peer-реплике.

Пример: Если у вас есть Region с 3 репликами (peer), PD гарантирует, что эти peer будут размещены на 3 разных узлах TiKV (единицах хранения), а не на одном узле, даже если этот узел имеет несколько томов хранения.


Механизмы отказоустойчивости

Стратегия размещения реплик TiKV в первую очередь направлена на отказоустойчивость. Концепция “позиции” здесь ключева: “peer могут иметь одинаковую ‘позицию’, которая является наименьшей единицей для отказоустойчивости” (документация TiKV).

Это означает:

  1. Сбой единицы хранения: При сбое единицы хранения (узла TiKV) PD гарантирует, что не все реплики Region теряются
  2. Сбой зоны/стойки: В многозонных развертываниях PD можно настроить так, чтобы размещать реплики в разных зонах
  3. Сбой центра обработки данных: В более крупных развертываниях реплики можно распределять по разным центрам обработки данных

Блог MyDBOps объясняет это на практике: “Добавление Peer: Добавляет новую реплику региона в узел TiKV для увеличения избыточности данных или балансировки нагрузки.”

Когда возникают ограничения по хранению, как отмечено в документации по устранению неполадок TiFlash, “Если все узлы TiFlash имеют недостаточно свободного дискового пространства, PD не может планировать новые Region peer в TiFlash, что приводит к тому, что реплики остаются недоступными”. Это показывает, как PD управляет размещением реплик с учетом ограничений по емкости хранения.


Практические последствия для управления кластером

Понимание правильной терминологии имеет практические последствия для управления кластерами TiKV:

Конфигурация: При настройке кластеров TiKV вы настраиваете метки расположения для единиц хранения, чтобы помочь PD принимать информированные решения о размещении. Как указано в документации по планированию TiKV: “Таким образом, мы можем настроить метки для TiKV peer и установить location-labels…”

Мониторинг: Необходимо отслеживать как состояние peer, так и состояние единицы хранения. Peer может быть работоспособным, в то время как его базовая единица хранения выходит из строя.

Восстановление после сбоя: При сбое единицы хранения PD автоматически переместит затронутые peer в работоспособные единицы хранения, как упоминается в контексте “Восстановление store после сбоя” (документация TiKV).

Планирование емкости: Понимание того, что peer потребляют ресурсы хранения на назначенных им единицах хранения, помогает при планировании емкости и предотвращает сценарии, при которых “реплики остаются недоступными” из-за ограничений по хранению.

Руководство по разработке TiKV подчеркивает, что “Region также является единицей данных, которая реплируется с помощью Raft для обеспечения высокой доступности. Region также является группой Raft в алгоритме Raft, состоящей из одного или более Peer…” Это подтверждает, что peer являются единицами репликации, размещаемыми на единицах хранения.

Заключение

Ключевые выводы:

  • Peer (узел-реплика) — это экземпляр реплики Region, в то время как storage (хранилище) относится к физической/виртуальной единице, на которой размещаются peer
  • PD гарантирует, что реплики Region не размещаются на одной и той же единице хранения (а не просто на разных экземплярах peer)
  • Термин “позиция” представляет наименьшую единицу для отказоустойчивости в TiKV
  • Ограничения по емкости хранения напрямую влияют на решения о размещении реплик, принимаемые PD

Практические рекомендации:

  • Настраивайте метки расположения на единицах хранения для обеспечения интеллектуального размещения реплик
  • Отслеживайте как состояние peer, так и состояние базовой единицы хранения
  • Планируйте емкость хранения с учетом требований к репликам
  • Используйте операторы планирования PD, такие как “Add Peer”, для целенаправленного управления репликами

Связанные вопросы:

  • Как метки расположения влияют на решения PD о размещении реплик?
  • Что происходит при сбое единицы хранения и как PD восстанавливает затронутые peer?
  • Как TiKV обрабатывает размещение реплик в многозонных или многодатacentricных развертываниях?

Техническая точность достигается за счет понимания того, что PD предотвращает потерю нескольких реплик при сбое единицы хранения, гарантируя, что реплики одного Region распределены по разным единицам хранения, а не просто по разным экземплярам peer.

Источники

  1. TiKV | Terminologies
  2. TiKV | Scheduling
  3. TiKV | Storage
  4. TiDB Scheduling | TiDB Docs
  5. TiKV | PD Config
  6. TiKV Development Guide - Region
  7. Troubleshoot a TiFlash Cluster | TiDB Docs
  8. TiDB Scheduling for Peak Database Performance