Взаимосвязь ресурсов в Yandex Managed Service for Sharded PostgreSQL
Примечание
Сервис находится на стадии Preview.
Sharded PostgreSQL — система для горизонтального масштабирования PostgreSQL через шардирование. Фактически это несколько кластеров PostgreSQL, объединенных в один кластер Sharded PostgreSQL.
Кластер Managed Service for Sharded PostgreSQL состоит из шардов, роутера и координатора (опционально). Роутеры и координаторы запускаются на хостах — виртуальных машинах с выделенными вычислительными ресурсами и зарезервированным объемом хранилища данных.
Шард
Шард — это кластер Managed Service for PostgreSQL, расположенный в том же каталоге и облачной сети, что и кластер Managed Service for Sharded PostgreSQL.
Шардов может быть один или несколько. Максимальное число шардов не ограничено и не зависит от типа шардирования, которое используется в кластере.
Каждый шард хранит независимый фрагмент данных. Данные распределяются по шардам согласно ключу шардирования.
Запросы направляются к шарду в зависимости от данных, которые он содержит. За распределение запросов между шардами отвечает роутер.
Роутер
Роутер — основной компонент кластера Managed Service for Sharded PostgreSQL, отвечающий за маршрутизацию запросов.
Клиент подключается к роутеру и отправляет запросы по протоколу PostgreSQL. Роутер анализирует запрос, перенаправляет его на шард, где хранятся нужные данные, получает результат выполнения запроса и возвращает его клиенту.
Роутер находит нужный шард с помощью правил шардирования. Если в кластере есть координатор, то правила поставляет он. Если координатора нет, правила задаются вручную для каждого роутера и хранятся в его оперативной памяти до перезагрузки.
При создании кластера вы можете выбрать тип шардирования — стандартное или расширенное. Если выбрать стандартное, в кластер будет добавлены хосты INFRA, объединяющие роли роутера и координатора. Чтобы обеспечить отказоустойчивость такого кластера, рекомендуется создать не менее трех хостов INFRA в разных зонах доступности. Максимальное число хостов INFRA — семь.
Если выбрать расширенное шардирование, роутерам будут выделены отдельные хосты ROUTER. Число роутеров, расположенных на таких хостах, не ограничено.
Координатор
Координатор — это компонент кластера Managed Service for Sharded PostgreSQL, отвечающий за хранение правил шардирования и балансировку нагрузки на шарды.
Наличие координатора зависит от типа шардирования кластера:
-
При стандартном шардировании координатор — обязательный компонент, его роль выполняет хост
INFRA. Чтобы обеспечить отказоустойчивость такого кластера, рекомендуется создать не менее трех хостовINFRAв разных зонах доступности. Максимальное число хостовINFRA— семь. -
При расширенном шардировании координатор — опциональный компонент, его роль выполняет хост
COORDINATOR. Чтобы обеспечить отказоустойчивость кластера, рекомендуется создать три хостаCOORDINATORв разных зонах доступности. Максимальное число хостовCOORDINATOR— пять.
Координаторы хранят правила шардирования в базе данных QDB, запущенной на хостах INFRA или COORDINATOR. Эта база данных представляет собой кластер etcd
С помощью координатора вы можете задавать и редактировать правила шардирования для всех роутеров сразу. Если изменить правила на одном из координаторов, обновленная информация будет передана другим координаторам и роутерам.