Кластеризация Prostore
Содержание раздела
Система поддерживает кластеризацию — подключение нескольких нод в одно окружение. Все ноды кластера равноправны и могут выполнять любые виды запросов. Сбой ноды не прерывает работу остальных нод.
Для работы с кластером Prostore необходимо подключиться к любой из его нод, указав ее доменное имя или IP-адрес и номер порта, равный значению параметра конфигурации DTM_CORE_HTTP_PORT
.
Подробнее о способах подключения к ноде см. в разделе Подключение, о конфигурации кластера см. в разделе Конфигурация кластера.
Состав кластера
Кластер может состоять из произвольного количества нод — узлов сервиса исполнения запроса (query execution core
). Для поддержки работы с брокером сообщений Kafka в кластере должны быть также развернуты узлы сервиса мониторинга статусов Kafka (status monitor
).
В кластере можно развернуть одинаковое количество узлов query execution core
и status monitor
или больше узлов query execution core
, чем узлов status monitor
, но не меньше. Например, при наличии трех экземпляров query execution core
можно развернуть три, два или один экземпляр status monitor
.
Взаимодействие кластера с другими компонентами
Все ноды кластера Prostore работают с общим набором внешних компонентов: одним хранилищем данных и одним экземпляром каждого коннектора, а также с общим сервером сервисной БД (ZooKeeper) и общим сервером или серверами Kafka.
Подробнее о внешних компонентах, с которыми работает система, см. в разделе Связи с другими системами и компонентами.
На рисунке ниже показан кластер Prostore и внешние компоненты, с которыми он взаимодействует.
Гарантии в кластере
Линеаризуемость (recency)
Чтобы обеспечить гарантии линеаризуемости на уровне кластера, необходимо использовать команду SYNC перед запросами чтения и выгрузки данных или читать и выгружать данные с явным указанием номера последней (recent) версии данных с помощью выражения FOR SYSTEM_TIME AS OF CN <sys_cn>.
Атомарность и уровень изоляции операций
Для кластера гарантируется атомарность операций записи и их изоляция на уровне сериализуемости (serializable isolation level).
Ограничения кластера Prostore
- Нет встроенного балансировщика нагрузки между нодами кластера.
- Нет выделенных нод, все ноды полностью равноправны.
- При работе с кластером в общем случае не гарантируется линеаризуемость: чтение и выгрузка данных из нод кластера, отличных от нод загрузки и обновления данных, может приводить к получению устаревших (на уровне сетевых задержек) данных. Линеаризуемость гарантируется только после выполнения команды SYNC или при чтении и выгрузке с указанием номера версии данных.
- Для всех нод кластера значение параметра конфигурации
AUTO_RESTORE_STATE
должно быть равноfalse
.