Что такое патроны в контексте PostgreSQL
Что проверяют
Слышите ли вы за искажённым словом реальную технологию. Объекта «патрон» в PostgreSQL нет; практически всегда за вопросом стоит Patroni, надстройка для автоматического переключения ролей в кластере. Проверяют, понимаете ли вы, как ваш сервис переживает отказ основного узла базы.
Как отвечать
Сначала честно уточните термин, потом отвечайте по сути.
Patroni это служба-агент рядом с каждым экземпляром PostgreSQL. Агенты договариваются через распределённое хранилище (etcd, Consul, ZooKeeper): ведущий узел держит ключ лидерства с коротким сроком жизни и продлевает его, пока жив. Не продлил, ключ освобождается, реплики выбирают нового ведущего по позиции журнала, остальные переключаются на репликацию с него. Приложение подключается не к конкретному хосту, а через точку входа: балансировщик, который спрашивает у агента роль узла, либо строка подключения с перечислением хостов и требованием нужной роли.
Со стороны Java важно другое. Переключение это разрыв всех соединений: пул обязан проверять соединение перед выдачей, а бизнес-операция переживать повтор. Чтение можно уводить на реплики, но задержка репликации никуда не девается, и только что записанное там может ещё не появиться.
Где спотыкаются
Отвечают про роли и привилегии, услышав похожее слово. Роли это управление доступом, к отказоустойчивости они отношения не имеют, и подмена темы видна сразу.
Считают, что после автоматического переключения приложение продолжит работать само. Открытые транзакции теряются, соединения в пуле становятся мёртвыми, и без проверки соединения и повторов сервис отдаёт ошибки ещё долго после смены ведущего.
Отправляют запись на реплику или, наоборот, весь трафик на ведущий узел. В первом случае запрос просто отклоняется, во втором единственная точка записи перегружается отчётами, которые спокойно жили бы на реплике.