С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
9 / 9 / 6
Регистрация: 08.01.2013
Сообщений: 578

Одна база данных у разных микросервисов

22.02.2022, 10:55. Показов 1869. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго!

Надо запилить несколько сэрвисов, и у каждого используется база данных (MySQL)

И у некоторых сэрвисов есть общие справочники (локация: районы, города, улицы, дома)

Подскажите плз, стоит ли использовать одну и ту-же базу, но подключать только те сущности базы (справочники) которые мне необходимы?

Ну и переопределить методы save/update - что-бы нельзя было случайно в них писать...

Или есть другие пути-решения данного вопроса ?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.02.2022, 10:55
Ответы с готовыми решениями:

Одна база, с разных компов разные расчёты.
Всем привет. Такая проблема: одна база + "калькулятор" - запускаю с одного компа, "калькулятор" всё считает как надо. Запускаю...

Одна база данных и два DbContext
Всем привет, пытаюсь понять как инициализировать второй контекст. Проект ASP.NET SPA. orm Entity Framework 6. И вообще стоит ли создавать...

Одна база данных на несколько компьютеров
Доброго времени! Никак не могу найти решение задачи. Есть n-ое количество компьютеров в локальной сети. Хочу сделать общую БД на...

7
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
22.02.2022, 11:08
вообще никто не мешает использовать несколько баз в проекте. Еще можно сделать отдельный сервис для адресов, например.
0
9 / 9 / 6
Регистрация: 08.01.2013
Сообщений: 578
22.02.2022, 11:11  [ТС]
Цитата Сообщение от xoraxax Посмотреть сообщение
вообще никто не мешает использовать несколько баз в проекте. Еще можно сделать отдельный сервис для адресов, например.
Я вообще про использование одной базы...
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
22.02.2022, 11:23
ну не хочешь несколько исползьуй одну - очевидно же вроде
0
9 / 9 / 6
Регистрация: 08.01.2013
Сообщений: 578
22.02.2022, 11:40  [ТС]
Цитата Сообщение от xoraxax Посмотреть сообщение
ну не хочешь несколько исползьуй одну - очевидно же вроде
В этом и вопрос, на сколько это хорошо/плохо или возможны глюки/сбои?
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,761
22.02.2022, 11:47
Цитата Сообщение от joub Посмотреть сообщение
В этом и вопрос, на сколько это хорошо/плохо или возможны глюки/сбои?
У каждого микросервиса должна быть своя/свои БД. Если тебе в разных сервисах нужны данные из одной базы, значит они сильно связаны и это должен быть один сервис.

Цитата Сообщение от joub Посмотреть сообщение
Ну и переопределить методы save/update - что-бы нельзя было случайно в них писать...
Или есть другие пути-решения данного вопроса?
В каком смысле переопределить? Зачем тебе вообще методы save/update там, где не нужно?

Добавлено через 2 минуты
https://microservices.io/patte... vices.html
0
9 / 9 / 6
Регистрация: 08.01.2013
Сообщений: 578
22.02.2022, 12:03  [ТС]
Цитата Сообщение от korvin_ Посмотреть сообщение
У каждого микросервиса должна быть своя/свои БД.
У меня есть сквозной справочник локаций, который используется практически в 7 из 10 модулей монолита, но сами модули слабо друг с другом связанны...

А так-же такая сущность как "Пользователь" , используется просто в 99% моделей, в виде пометки как создателей тех или иных документов, записей, и прочего...

Пользователей я думал вытащить на уровень гетвея (Spring Gateway) но еще не придумал как передавать их в сервисы...

По этой причине и думал использовать единую базу, где хранятся все данные...
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,761
22.02.2022, 14:19
Цитата Сообщение от joub Посмотреть сообщение
У меня есть сквозной справочник локаций, который используется практически в 7 из 10 модулей монолита, но сами модули слабо друг с другом связанны...
Никаких сквозных справочников в микросервисной архитектуре быть не должно. Микросервисы общаются через шину сообщений (Message Bus), содержащую всю необходимую информацию.

Допустим, для примера, есть три микросервиса: Профиль (пользователя), Заказы и Доставка. И «справочник» Локаций (адреса доставки), который можно посмотреть как в Профиле, так и при оформлении Доставки.

Пользователь оформляет заказ в мс Заказы, тот отправляет в шину сообщение о том, что заказ сформирован. Далее пользователя переключают на оформление Доставки, тут он может выбрать Локацию из списка ранее использованных, который хранится в локальной БД Доставки, либо добавить новую Локацию. Она сохраняется в локальную БД Доставок, кроме того мс Доставки публикует сообщение в шину, что пользователь такой-то добавил себе новую Локацию. МС Профиль получает это сообщение и обновляет список Локаций пользователя в своей БД. Если пользователь редактирует список Локаций у себя в профиле, то мс Профиль отправляет сообщения об этом в шину, мс Доставки получает эти сообщения и обновляет данные в своей БД.

При этом никаких внутренних ID справочников ни в каких сообщениях в шине быть не должно. Если нужно отправить в шину сообщение типа
JSON
1
2
3
4
5
{
  "bla_bla": "Bla bla",
  "foo": "Bar",
  "location_id": 123
}
то вместо это сообщение должно иметь вид
JSON
1
2
3
4
5
6
7
8
9
{
  "bla_bla": "Bla bla",
  "foo": "Bar",
  "location": {
    "city": "Moscow",
    "street": "...",
    ...
  }
}
Могут быть публичные ID, доступные извне, но они всё равно должны сопровождаться дополнительной информацией, типа:
JSON
1
2
3
4
5
6
7
8
9
10
{
  "bla_bla": "Bla bla",
  "foo": "Bar",
  "location": {
    "id": "c3e90fd7-d4c4-44cd-9c04-d74dde563521",
    "city": "Moscow",
    "street": "...",
    ...
  }
}
Цитата Сообщение от joub Посмотреть сообщение
А так-же такая сущность как "Пользователь" , используется просто в 99% моделей, в виде пометки как создателей тех или иных документов, записей, и прочего...
Для этого не нужно иметь доступ к таблице пользователей, достаточно передавать с каждым сообщением идентификатор пользователя, со всей нужной информацией. В зашифрованном виде, если нужно, например, в виде JWT.

Цитата Сообщение от joub Посмотреть сообщение
Пользователей я думал вытащить на уровень гетвея (Spring Gateway) но еще не придумал как передавать их в сервисы...
По этой причине и думал использовать единую базу, где хранятся все данные...
Посмотри как это сделано, например, в Netflix:

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.02.2022, 14:19
Помогаю со студенческими работами здесь

Одна база данных или две
У нас на работе СУБД SQL Server 2008. В одном сервере в одном экземпляре стоят две БД. Одна БД в последнее время несколько увеличилась....

3 языка, но одна база данных контента и пользователей
Приветствую! Как сделать 3 или более копии сайта с разными языками пользовательского интерфейса (языковые файлы есть), но с общей для...

Обновление набора данных (два клиента, одна база)
Помогите разобраться может кто поможет. Есть база fdb, к ней написаны 2-а клиента на делфях. Первый клиент записывает данные в таблицу базы...

Два exe-файла и одна общая база данных
здравствуйте, нужна мне вот что, через первой програмй заношу данные в базу данных, а второи должен зафиксировать эти изменения в базе...

Одна база данных на несколько компьютеров без локальной сети, но с Интернетом
Здравствуйте, обращаюсь к светлым головам сего бренного мира. Суть задачи состоит в том, чтобы база данных (MS Access) была все время в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru