создать пул соединений для нескольких БД на одном сервере БД (Spring Boot) - PullRequest
0 голосов
/ 27 марта 2020

Я ищу способ создания пула соединений для многих БД на одном сервере БД (PostgreSQL Аврора). Это означает, что мне нужна возможность изменения целевой БД соединения во время выполнения. В настоящее время я использую HikariCP для пула соединений, в стеке Spring Boot и JHispter.

Справочная информация:

  • нам нужно развернуть многопользовательскую микросервисную систему с один сервер БД (точнее, c, один экземпляр AWS Аврора PostgreSQL)
  • Наше решение мультитенантности состоит в том, что у каждого арендатора есть БД, в этой БД у нас много схем для каждый сервис. Все базы данных находятся в одном экземпляре AWS Aurora.

Наша проблема:

  • при таком развертывании у нас есть пул соединений для каждого (арендатор x микро- сервисный экземпляр). Это приводит к огромному количеству соединений.
    • Ie: с размером пула 50 соединений / пул. Нам нужно: 500 арендаторов x 20 экземпляров микросервисов x 50 подключений / пул = 500 000 подключений.
  • Максимально допустимое количество подключений к любой базе данных Aurora составляет 16000, и фактически по умолчанию это "max_connections" "Параметр обычно установлен на что-то меньшее.

Так что теперь я ищу способ увеличить область нашего пула, чтобы многие арендаторы могли использовать один и тот же пул. Поскольку мы используем только 1 экземпляр сервера Aurora, я думаю, что можно создать пул соединений, который может быть разделен между многими арендаторами. Есть ли способ иметь пул соединений, который может переключать БД во время выполнения?

1 Ответ

1 голос
/ 27 марта 2020

Если Aurora не выполнила некоторые настройки, вы не сможете изменить базу данных соединения, как только оно будет установлено в PostgreSQL. Вы по-прежнему можете использовать пул, но это будет отдельный пул для каждой базы данных. Это довольно фундаментально, с этим ничего нельзя поделать.

...