powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Java [игнор отключен] [закрыт для гостей] / Микросервисы: на каждый сервис своя БД
25 сообщений из 58, страница 1 из 3
Микросервисы: на каждый сервис своя БД
    #39806662
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И снова привет!

Изучение микросервисов продолжается, и тема эта покрыта миллионами вопросов.

Кто имел опыт проектов с использованием МС и таки там была реализация "на каждый сервис своя БД" ? (БЕЗ ИСПОЛЬЗОВАНИЯ ПРОКСИРУЮЩИХ МЕХАНИЗМОВ СОЕДИНЯЮЩИХ БД)

Интересует такой вот момент - когда используем одну БД, то данные в ней согласованы, например сохранение вот таких цепочек:
Цепочка 1Клиент -> Заказ -> Изделия -> Позиции заказа -> Детали позиций заказ -> и т.д. до конца.
Цепочка 2Клиент -> Заказ -> Услуги -> Доставка -> Водители и Транспорт -> и т.д. до конца.
Итого:
1) мы можем одним запросом из базы выбрать всю информацию по клиенту. (легкость сохранности, целостности и получения всей инфы)
2) если мы грохаем клиента, то каскадно удаляется вся информация. (нет "мусора")

Я так понимаю, что должен быть механизм, который:
1) находит несвязанные данные
2) убирает мусор

Но как же на самом деле решается вопрос целостности информации в распределенных БД, которые закреплены за своим микросервисом?
...
Рейтинг: 0 / 0
Микросервисы: на каждый сервис своя БД
    #39806674
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Imperous,
А где было требование на МС своя бд?
...
Рейтинг: 0 / 0
Микросервисы: на каждый сервис своя БД
    #39806679
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Imperous,
А где было требование на МС своя бд?
Требования как такого не видел, но читая разные доки с примерами, все как один пишут что реализация была именно такая - на каждый сервис своя БД.
И в этом что-то есть, некоторая независимость.
Не будем сейчас брать в учет микросервисы, которые нужны для балансировки нагрузки, и выполняющие одинаковые функции.
...
Рейтинг: 0 / 0
Микросервисы: на каждый сервис своя БД
    #39806681
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот тут например пишут:
авторДецентрализация данных

Еще один из важнейших элементов в парадигме микросервисов.
Каждому микросервису по своей базе данных!
...
Рейтинг: 0 / 0
Микросервисы: на каждый сервис своя БД
    #39806683
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Imperous,
Слушай, ты журналист для интервью или программист?
Тут программисты в ветке.
Ты плодишь темы без всякого смысла и ЗАДАЧИ.
Прошлую тему про МС чем ты подытожил?
Дай ссылку.
А твой код позже попросим.
...
Рейтинг: 0 / 0
Микросервисы: на каждый сервис своя БД
    #39806689
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ImperousИ снова привет!

Изучение микросервисов продолжается, и тема эта покрыта миллионами вопросов.

Привет! Похвально, но пока у тебя очень слабое понятие о МС. Самое главное что тебе надо понять, что разбиение на микросервисы должно делаться не просто для того чтобы разбить, а чтбы оно решало бизнес-проблему или давало некие другие преимущества. Если данные сильно зависимы - это должен быть один микросевис, и храниться они должны в одной базе, вот и все.
Есть два варианта, когда такое разбиение все же имеет смысл -
1) Данные не умещаются на одном сервере\базе и нужно их масштабировать\оптимизировать. В этом случае, как и при всех распределенных решениях мы немного теряем в consistency, т.е она не будет гарантированной.
2) Когда допустима задержка времени и моментальная консистентность данных не критична, сойдет и eventual.

В таком случае можно разбить на МС, но общение между ними строго асинхронное через immutable message. То есть, если удалили клиента - формируется сообщение ClientDeleted(id) и пуляется в брокер сообщений или условную кафку. Второй МС слушает эту очередь и реагирует на сообщением зачисткой мусора. Как именно зачистка реализована - зависит от тебя
...
Рейтинг: 0 / 0
Микросервисы: на каждый сервис своя БД
    #39806695
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никImperousИ снова привет!

Изучение микросервисов продолжается, и тема эта покрыта миллионами вопросов.

Привет! Похвально, но пока у тебя очень слабое понятие о МС. Самое главное что тебе надо понять, что разбиение на микросервисы должно делаться не просто для того чтобы разбить, а чтбы оно решало бизнес-проблему или давало некие другие преимущества. Если данные сильно зависимы - это должен быть один микросевис, и храниться они должны в одной базе, вот и все.
Есть два варианта, когда такое разбиение все же имеет смысл -
1) Данные не умещаются на одном сервере\базе и нужно их масштабировать\оптимизировать. В этом случае, как и при всех распределенных решениях мы немного теряем в consistency, т.е она не будет гарантированной.
2) Когда допустима задержка времени и моментальная консистентность данных не критична, сойдет и eventual.

В таком случае можно разбить на МС, но общение между ними строго асинхронное через immutable message. То есть, если удалили клиента - формируется сообщение ClientDeleted(id) и пуляется в брокер сообщений или условную кафку. Второй МС слушает эту очередь и реагирует на сообщением зачисткой мусора. Как именно зачистка реализована - зависит от тебя

Спасибо! Именно это я и спрашивал.
...
Рейтинг: 0 / 0
Микросервисы: на каждый сервис своя БД
    #39806696
Фотография Герой дня
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если приходится иметь разные бд на микросервисах - то вопрос согласования ложиться на плечи фреймворка

можно согласовывать БД через стрим-потоки вроде https://debezium.io/ , через сообщения RabbitMQ, которые обрабатывают сервисы и так далее (CQRS и тп)
...
Рейтинг: 0 / 0
Микросервисы: на каждый сервис своя БД
    #39806707
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Imperous,
Слушай, ты журналист для интервью или программист?
Тут программисты в ветке.
Ты плодишь темы без всякого смысла и ЗАДАЧИ.
Прошлую тему про МС чем ты подытожил?
Дай ссылку.
А твой код позже попросим.
Он похож на бывшего кодера Sybase-технологий который сейчас хочет свичнутся на Java. Я так думаю.
...
Рейтинг: 0 / 0
Микросервисы: на каждый сервис своя БД
    #39806718
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Герой дняесли приходится иметь разные бд на микросервисах - то вопрос согласования ложиться на плечи фреймворка

можно согласовывать БД через стрим-потоки вроде https://debezium.io/ , через сообщения RabbitMQ, которые обрабатывают сервисы и так далее (CQRS и тп)

Кстати про очереди типа RabbitMQ.
Например есть 3 сервиса.
В RabbitMQ попадает сообщение, что клиента с таким id больше нет.
2 сервиса-подписчика получают это сообщение и грохают у себя в базах инфу по клиенту.
А вот сервис№3 был на тот момент в дауне, и сразу не отреагировал. Получается при старте сервиса№3 нужно прочитать из очереди все сообщения с того момента как сервис был "положен" и поочередно выполнить соответствующие инструкции.

Так оно работает?
...
Рейтинг: 0 / 0
Микросервисы: на каждый сервис своя БД
    #39806727
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ImperousА вот сервис№3 был на тот момент в дауне, и сразу не отреагировал. Получается при старте сервиса№3 нужно прочитать из очереди все сообщения с того момента как сервис был "положен" и поочередно выполнить соответствующие инструкции.

Так оно работает?
90% это будет зависеть от того как вы сконфигурируете этот RabbitMQ. Я с ним не знаком.
Но в других мессенджинговых системах есть длительная подписка (кажется Durable Suscribtion)
и если вы всё правильно сделали то сообщение для вашего упавшего сервиса будет ждать своего
прочтения очень долго. Ну... сколько вам нужно.

Ситуацию с сообщением которое вы УЖЕ прочитали и упали надо рассмотреть отдельно.

Опять-же я становлюсь занудой рекламируя доклад Алименкова по JMS но он всё-таки прошёлся и по этому
кейсу поэтому ищите в youtube.
...
Рейтинг: 0 / 0
Микросервисы: на каждый сервис своя БД
    #39806730
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Imperous,
Слушай, ты журналист для интервью или программист?
Тут программисты в ветке.
Ты плодишь темы без всякого смысла и ЗАДАЧИ.
Прошлую тему про МС чем ты подытожил?
Дай ссылку.
А твой код позже попросим.
1) В Java я новичок.
2) Именно поэтому я тут задаю вопросы, а не бабкам на привозе.
3) Я задаю вопросы которыми в данный момент задался. Изучаю материал, я всегда стараюсь разобраться в интересующей меня теме. Кроме форума я читаю достаточно количество статей, и на русском и на английском, и да, мне не всегда ясно что к чему. Это направление для меня ново. Некоторые слова я вообще впервые вижу. К сожалению могу заметил, что многие статьи в первую очередь ориентированны на тех кто уже знаком с материалом, и новичку сложно понять что происходит. Не так что вот смотрите, есть "1 + 1 = 2", в стиле "Хо-па с 11 цифры после запятой в числе Пи идет последовательность 8979323846", и ты такой "а при чем здесь вообще Пи?".
Не видишь смысла, не хочешь узнавать новое, пожалуйста не открывай темы в которых увидишь автором меня.
4) Какую именно прошлую? В которой дали ссылки на материал? Или в которой развели абстрактный флуд?
5) На свой гитхаб? Но ты там совершенно не увидишь микросервисов.
...
Рейтинг: 0 / 0
Микросервисы: на каждый сервис своя БД
    #39806731
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Imperous,

зависит от настроек:
1. настроить ttl сообщений и отправить автомато по истечению срока в dead queue. А очередь мертвых сообщений уже как придумаете, так и обрабатывайте

2. Можете настроить ttl сообщений так, что они там будут довольно долго ждать своего срока




Но это rabbit, таже kafka ведет себя как лог сообщений, где вы по умолчанию реализуете проверку на повторное чтение\доставку сообщений.
...
Рейтинг: 0 / 0
Микросервисы: на каждый сервис своя БД
    #39806742
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ImperousСпасибо! Именно это я и спрашивал.
эти требования и к обычным сервисам относятся.
maytonОн похож на бывшего кодера Sybase-технологий который сейчас хочет свичнутся на Java. Я так думаю.
рядом надо иметь ком и писать, писать, писать.
Ну и темы свои закрывать чем то.
...
Рейтинг: 0 / 0
Микросервисы: на каждый сервис своя БД
    #39806750
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ImperousКстати про очереди типа RabbitMQ.если изучаете микросервисы, то исключите лишнее - асинхронность и очереди.
...
Рейтинг: 0 / 0
Микросервисы: на каждый сервис своя БД
    #39806754
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ImperousНо как же на самом деле решается вопрос целостности информации в распределенных БД, которые закреплены за своим микросервисом?
- как любят говорить про микросервисы - это просто!))) Вот только когда начинаешь задавать вопросы про транзакции, юные оптимисты начинают "елозить по теме" и ссылаться на "согласованность". Короче тут и начинается гемор для разработчика. Вот, на мой взгляд, хорошо написанная статья, где автор затронул и интересующую Вас тему: Microservices. Как правильно делать и когда применять?
...
Рейтинг: 0 / 0
Микросервисы: на каждый сервис своя БД
    #39806758
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123ImperousКстати про очереди типа RabbitMQ.если изучаете микросервисы, то исключите лишнее - асинхронность и очереди.
Асинхронность и очереди критически важны для интеграции МС, так что это далеко не лишнее, не основное, но не лишнее
...
Рейтинг: 0 / 0
Микросервисы: на каждый сервис своя БД
    #39806762
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalov Вот только когда начинаешь задавать вопросы про транзакции
Например какие? Имхо, основная печаль в том что люди не умеют грамотно определять рамки микросервиса\класса\модуля\подставить свое, т.е грамотно декомпозировать задачу. Потому что транзакция над двумя микросервисами в реальности не имеет особого смысла, иначе просто их нужно объелинить
Статья неплохая
...
Рейтинг: 0 / 0
Микросервисы: на каждый сервис своя БД
    #39806763
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalov,
+1
Невозможно новичку с нуля в Java прийти и написать микросервисы.
Это архитектура. Второй уровень)
Завтра он пополнит армию кричащих про них на каждом углу.
Автору надо написать хотя бы 2 ПРОСТО сервиса.
Как раньше были в Java классы, бины и просто классы POJO.
Нужно было как то обозначить простой класс? )
...
Рейтинг: 0 / 0
Микросервисы: на каждый сервис своя БД
    #39806765
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никАсинхронность и очереди критически важны для интеграции МС
по ссылке треугольник.
В треугольнике все 3 угла важны)). С этим согласен.
...
Рейтинг: 0 / 0
Микросервисы: на каждый сервис своя БД
    #39806770
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Imperous3) Я задаю вопросы которыми в данный момент задался. Изучаю материал, я всегда стараюсь разобраться в интересующей меня теме.
Теперь сравни своё текст для журналиста задающего вопросы.
Он тоже приходит и хочет разобраться.
Но он журналист.
А у тебя Цель должна быть другая - стать программистом.
А вот для этого надо не микросервисы изучать. Увы.
...
Рейтинг: 0 / 0
Микросервисы: на каждый сервис своя БД
    #39806787
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalovавтор затронул и интересующую Вас тему: Microservices. Как правильно делать и когда применять? Чет какой-то зашквар:авторВсе это называется конечной согласованностью (eventual consistency). Происходит это не атомарно, а за счет технологии гарантированной доставки Message Bus. При этом взаимодействие сервисов с шиной — транзакционное, и шина обеспечивает доставку всех сообщений. Поэтому мы можем быть уверены, что в конце концов до наших сервисов все долетит (если, конечно, не решим почистить сообщения брокера через консоль администрирования).т.е. распределенные транзакции-таки есть
...
Рейтинг: 0 / 0
Микросервисы: на каждый сервис своя БД
    #39806788
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфиловт.е. распределенные транзакции-таки есть
С уровнем изоляции READ_UNCOMMITED :)
...
Рейтинг: 0 / 0
Микросервисы: на каждый сервис своя БД
    #39806790
Фотография Герой дня
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonImperousА вот сервис№3 был на тот момент в дауне, и сразу не отреагировал. Получается при старте сервиса№3 нужно прочитать из очереди все сообщения с того момента как сервис был "положен" и поочередно выполнить соответствующие инструкции.

Так оно работает?
90% это будет зависеть от того как вы сконфигурируете этот RabbitMQ. Я с ним не знаком.
Но в других мессенджинговых системах есть длительная подписка (кажется Durable Suscribtion)
и если вы всё правильно сделали то сообщение для вашего упавшего сервиса будет ждать своего
прочтения очень долго. Ну... сколько вам нужно.

Ситуацию с сообщением которое вы УЖЕ прочитали и упали надо рассмотреть отдельно.

Опять-же я становлюсь занудой рекламируя доклад Алименкова по JMS но он всё-таки прошёлся и по этому
кейсу поэтому ищите в youtube.

необработанные сообщения возвращаются в очередь при соответствующей настройке
...
Рейтинг: 0 / 0
Микросервисы: на каждый сервис своя БД
    #39806791
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никKachalov Вот только когда начинаешь задавать вопросы про транзакции
Например какие?
- любые) Либо мы работаем в транзакционном контексте (что просто только в рамках одного сервиса), либо без него. Растянуть транзакцию на несколько сервисов технически сложно. Если затянуть в сервис все что должно удовлетворять принципу ACID, то неожиданно может получиться монолит) Короче, либо транзакции, либо миросервисы (и микротранзакции, т е транзакция в пределах одного сервиса).
...
Рейтинг: 0 / 0
25 сообщений из 58, страница 1 из 3
Форумы / Java [игнор отключен] [закрыт для гостей] / Микросервисы: на каждый сервис своя БД
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]