@softshape

Может ли одно Java-приложение работать с разными БД?

Есть приложение на Spring, работающее по принципу "один сервер == один клиент". Встала задача масштабироваться на 100 (условно) клиентов. Поднимать 100 серверов не хочется. Бродит мысль поднять один сервер приложений и один сервер БД, в котором было бы 100 одинаковых по структуре, но разных по содержанию баз. Приложение в момент получения запроса анализирует имя домена, берет оттуда имя клиента и коннектится к его базе. Возможно ли такое?
  • Вопрос задан
  • 274 просмотра
Пригласить эксперта
Ответы на вопрос 4
xez
@xez Куратор тега Java
TL Junior Roo
@rPman
В принципе spring позволяет работать с несколькими базами, но все удобства сразу уйдут, ведь там все завязано на то что ты конфигурируешь классы привязывая каждый к своей базе данных, а если ты начнешь сам рулить подключениями, будет уже не так удобно.

У меня есть совет, так как структуры для каждого пользователя одни и те же, то можно смешать данные всех пользователей в одной базе, добавив поле для фильтрации user_id и везде в запросах его указывать.
Ответ написан
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Добрый день.
Что за приложение. которое работает по принципу "1 сервер - 1 клиент". А если в будущем будет 1000 клиентов? А если 1М?
Ну а так вы можете перейти на микросервисную архитектуру. Развернуть отдельный сервер конфигурации (config server), gateway & discovery service. А затем развернуть по 1 инстансу приложения на каждого клиента
Ну или как отметил коллега, реализовать мультиарендность (multitenancy)
Ответ написан
@tro_pic_rock
Для вашей задачи уже создали eurika и kafka. По крайней мере они занимаются распределением нагрузки.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы