Архитектура YMatrix

YMatrix использует архитектуру без общего ресурса (share-nothing). Её ключевая особенность заключается в том, что каждый узел работает независимо, не разделяя память или хранилище, а взаимодействует исключительно через сетевое соединение. Такая архитектура широко применяется в распределённых базах данных, системах больших данных и веб-сервисах с высокой нагрузкой.

Базовая архитектура

Полный производственный кластер YMatrix включает:

  • 1 мастер-узел
  • 1 резервный мастер-узел
  • N узлов данных (каждый запускает несколько первичных и зеркальных экземпляров)

Basic Architecture

Мастер-узел

  • Управление сессиями клиентов: Выступает в качестве точки входа для приложений, обеспечивающей приём и управление запросами на подключение клиентов.
  • Разбор SQL и планирование запросов: Анализирует SQL-запросы, поступающие от клиентов, и генерирует распределённые планы выполнения (Query Plans).
  • Распределение планов и мониторинг выполнения: Распределяет сгенерированный план выполнения на все сегменты данных и отслеживает ход их выполнения.
  • Агрегация результатов и возврат клиенту: Собирает результаты со всех сегментов данных и возвращает финальный ответ клиенту.
  • Хранение метаданных: Не хранит бизнес-данные; содержит только системные метаданные (словарь данных), включая определения и атрибуты всех элементов данных.

Резервный мастер-узел

  • Резервирование данных и согласованность: Поддерживает идентичные данные и функциональность с мастер-узлом.
  • Автоматический переход при сбое: При отказе мастер-узла резервный мастер автоматически становится новым мастером, обеспечивая непрерывность сервиса.
  • Изолированное развертывание: Резервный мастер должен размещаться на другом физическом хосте, отличном от мастер-узла.

Узел данных

Узлы данных являются основными компонентами хранения и вычислений в YMatrix. Данные таблиц распределяются между первичными экземплярами в соответствии с конфигурацией. Каждый первичный экземпляр содержит уникальный фрагмент данных без пересечений. Во время выполнения запроса мастер генерирует план выполнения и распределяет его на все первичные экземпляры для параллельной обработки, что повышает скорость ответа за счёт параллельных вычислений.

Первичный экземпляр

На одном узле может существовать несколько независимых первичных экземпляров.

  • Хранение данных: Данные таблиц распределяются между первичными экземплярами в соответствии с конфигурацией. Каждый первичный экземпляр содержит непересекающийся фрагмент данных.
  • Выполнение распределённых запросов: Выполняет планы выполнения, отправленные мастер-узлом, используя параллельные вычисления для ускорения ответа на запросы.
  • Ядро обработки данных: Ключевой элемент достижения высокой производительности. Данные и нагрузка равномерно распределяются между несколькими однородными первичными экземплярами, позволяя им одновременно работать над одной задачей и завершать её синхронно.

Зеркальный экземпляр

На одном узле может существовать несколько независимых зеркальных экземпляров.

  • Согласованность с первичным экземпляром: Поддерживает идентичные данные и функциональность с соответствующим первичным экземпляром.
  • Поддержка отказоустойчивости: При отказе первичного экземпляра (например, из-за отключения питания или сбоя процесса) зеркальный экземпляр автоматически становится активным, беря на себя хранение данных и вычисления, обеспечивая бесперебойную работу. В производственных средах первичные и зеркальные экземпляры обычно размещаются на отдельных хостах для предотвращения единой точки отказа.

Выполнение запросов

Запросы оптимизируются для генерации плана выполнения, который затем исполняется вычислительным и хранилищным движками для чтения данных, выполнения вычислений и возврата результатов.

Оптимизатор

YMatrix предоставляет два оптимизатора:

  • PQO (Postgres Query Optimizer): Основан на родном оптимизаторе PostgreSQL, подходит для транзакционных (TP) рабочих нагрузок и большинства аналитических (AP) сценариев.
  • ORCA: Оптимизатор на основе Cascades, генерирующий более эффективные планы выполнения для крупных и сложных запросов, снижающий потребление ресурсов и повышающий производительность.

Хранилище

YMatrix поддерживает два движка хранения:

  • HEAP: Классический движок хранения по строкам, унаследованный от PostgreSQL, идеально подходящий для транзакционных (TP) рабочих нагрузок с высокой производительностью операций вставки, обновления и удаления.
  • MARS3: Высокопроизводительный гибридный движок хранения строк и столбцов, разработанный YMatrix, обеспечивающий отличную производительность в аналитических (AP) и временных рядах, а также высокий коэффициент сжатия.

Вычислительный движок

YMatrix использует полностью векторизованный движок выполнения. В сценариях с большими объёмами данных это значительно повышает скорость выполнения запросов.

Высокая доступность

YMatrix обеспечивает высокую доступность за счёт зеркалирования, а также предоставляет аварийное восстановление между сайтами для поддержания непрерывности сервиса в экстремальных условиях.

Зеркалирование

При включённом зеркалировании каждый первичный экземпляр имеет соответствующий зеркальный экземпляр с идентичными данными и функциональностью. В производственной среде первичные и зеркальные экземпляры размещаются на отдельных хостах.

  • В нормальном режиме зеркальные экземпляры не участвуют в вычислениях; они лишь поддерживают синхронизацию данных с первичными.
  • При отказе первичного экземпляра или его хоста зеркальный экземпляр бесшовно перенимает его функции, обеспечивая непрерывность сервиса.
    Mirroring

Управление состоянием

ALOHA (Advanced Least Operation High Availability) — это новая служба управления состоянием кластера.
В кластере YMatrix случайным образом выбирается нечётное количество узлов для формирования распределённого кластера ETCD, который хранит состояние узлов и экземпляров. При сбое (отказ узла, сбой экземпляра и т.п.) система использует эту информацию для автоматического переключения и миграции отказов, обеспечивая высокую доступность.
etcd

Аварийное восстановление между сайтами

YMatrix поддерживает развертывание с аварийным восстановлением между сайтами. При отказе основного кластера сервисы могут переключиться на резервный кластер, который затем функционирует как обычный кластер YMatrix.
Disaster Recovery Architecture