Как работает SPG99: поток обработки запросов
StableЧто происходит при первом подключении к базе: от Gateway и Control Plane до soft basebackup, готового Compute и возможного handoff автоскейлера.
Обновлено: 21 марта 2026 г.
Ниже — типовой сценарий, когда база была остановлена и её нужно разбудить при первом подключении.
Пошаговый путь
- Клиент подключается к Gateway по обычному PostgreSQL DSN и передаёт
pg_user/pg_password. - Gateway понимает, к какому tenant и какой базе относится подключение.
- Gateway обращается в Control Plane за lease и проверяет, есть ли уже активный writer.
- Если база находится в
stopped, Control Plane инициирует её запуск через Provisioner. - Provisioner поднимает или назначает новый compute‑pod.
- Compute получает runtime‑контракт: tenant, db, timeline, writer term, профиль compute, адрес Pageserver и список Safekeeper.
- Compute запрашивает у Pageserver soft basebackup — тонкий startup‑образ для запуска PostgreSQL.
- Pageserver подготавливает стартовый минимум: системные каталоги, relmap, служебное состояние и sparse placeholders вместо полного локального набора пользовательских relation files.
- Compute запускает PostgreSQL, а пользовательские relation pages при необходимости подтягиваются лениво через Pageserver на local miss.
- Перед выходом в
readyCompute проверяет критичные storage‑зависимости, в том числе WAL quorum. - Gateway получает адрес backend‑а и переключает клиентское соединение на уже поднятый PostgreSQL.
Что происходит дальше
Пока база используется:
- Gateway удерживает lease;
- lease регулярно продлевается;
- Control Plane не считает базу безопасной для idle‑stop.
Когда активность заканчивается:
- lease освобождается;
- база становится кандидатом на auto‑stop;
- Control Plane переводит compute в неактивное состояние.
Как здесь участвует автоскейлер
Если платформа решает сменить профиль writer, путь уже другой. Она не меняет живой pod “на месте”, а делает controlled handoff:
prepare candidate -> freeze new checkouts -> drain -> stop old -> promote new -> unfreeze
Это особенно важно для production‑нагрузки:
- данные и writer term остаются согласованными;
- Gateway знает, когда нельзя брать новые checkout'ы;
- long‑lived pinned/session трафик не режется без контроля.
Что важно понимать пользователю
- с точки зрения клиента всё выглядит как обычное подключение к PostgreSQL;
- реальная orchestration‑логика спрятана внутри платформы;
- первое подключение к sleeping‑базе может быть немного медленнее;
- durable‑состояние базы не привязано к жизни одного worker;
- при масштабировании writer меняется поколение compute, а не только одна цифра в UI.
Почему это удобно
Такая цепочка даёт хороший компромисс между стоимостью и скоростью:
- compute не держится включённым без нагрузки;
- пользователь не управляет worker‑ами вручную;
- soft basebackup ускоряет cold start;
- storage‑контур обеспечивает надёжность независимо от конкретного compute‑инстанса.
