Кластеризация Prostore

Содержание раздела
  1. Состав кластера
  2. Взаимодействие кластера с другими компонентами
  3. Гарантии в кластере
    1. Линеаризуемость (recency)
    2. Атомарность и уровень изоляции операций
  4. Ограничения кластера Prostore

Система поддерживает кластеризацию — подключение нескольких нод в одно окружение. Все ноды кластера равноправны и могут выполнять любые виды запросов. Сбой ноды не прерывает работу остальных нод.

Для работы с кластером Prostore необходимо подключиться к любой из его нод, указав ее доменное имя или IP-адрес и номер порта, равный значению параметра конфигурации DTM_CORE_HTTP_PORT.

Подробнее о способах подключения к ноде см. в разделе Подключение, о конфигурации кластера см. в разделе Конфигурация кластера.

Состав кластера

Кластер может состоять из произвольного количества нод — узлов сервиса исполнения запроса (query execution core).

Взаимодействие кластера с другими компонентами

Все ноды кластера Prostore работают с общим набором компонентов: одним хранилищем данных и одним экземпляром каждого коннектора, а также с общим сервером сервисной БД (ZooKeeper) и общим сервером или серверами Kafka.

Подробнее о компонентах, с которыми работает система, см. в разделе Компоненты системы и их связи.

На рисунке ниже показан кластер Prostore и внешние компоненты, с которыми он взаимодействует.

Кластер Prostore с внешними компонентами и системами

Гарантии в кластере

Линеаризуемость (recency)

Чтобы обеспечить гарантии линеаризуемости на уровне кластера, необходимо использовать команду SYNC перед запросами чтения и выгрузки данных или читать и выгружать данные с явным указанием номера последней (recent) версии данных с помощью выражения FOR SYSTEM_TIME AS OF CN <sys_cn>.

Атомарность и уровень изоляции операций

Для кластера гарантируется атомарность операций записи и их изоляция на уровне сериализуемости (serializable isolation level).

Ограничения кластера Prostore

  • Нет встроенного балансировщика нагрузки между нодами кластера.
  • Нет выделенных нод, все ноды полностью равноправны.
  • При работе с кластером в общем случае не гарантируется линеаризуемость: чтение и выгрузка данных из нод кластера, отличных от нод загрузки и обновления данных, может приводить к получению устаревших (на уровне сетевых задержек) данных. Линеаризуемость гарантируется только после выполнения команды SYNC или при чтении и выгрузке с указанием номера версии данных.
  • Для всех нод кластера значение параметра конфигурации AUTO_RESTORE_STATE должно быть равно false.