170 похожих чатов

Подскажите пожалуйста по архитектуре микросервисов. У меня есть 2 сервиса:

user-service и shop-service. в Юзер сервисе есть таблица карзины, в которой есть айд пользователя и массив товаров которые у него в корзине (тупо их айдишники) все описание товаров и так далее лежит в шоп сервисе. Мне необходимо вернуть на клиент юзера со всеми его товарами (не только с айдшиниками, а с полной инфой). Как лучше сделать?

1. Из юзер сервиса дергать шоп сервис, что бы получить все товары и потом собрать json
2. На Gateway сперва сделать запрос к юзер сервису, потом к шоп сервису и так же на гейтвейее собрать json
3. Сделать 2 запроса с клиента

14 ответов

21 просмотр

Зависит от архитектуры 😄 Вообще годный вопрос, все 3 варианта кажутся хорошими и уместными. Это вопрос паттернов. Так понимаю, речь про шину событий, а не rpc

Думаю логичнее будет запрос от юзер-сервиса отправить, раз уж он отвечает за эти данные.

из юзер сервиса дёргать cart сервис, а оттуда шоп

Хотя последний вариант в подходе микросервисов теряет консистентность получаемых данных (наврядли в простом шопе это будет важно), но может быть проблема

Andy Cox
из юзер сервиса дёргать cart сервис, а оттуда шоп

О ты, как я тебя давно выдел, ты почему ушел?

Артем
Думаю логичнее будет запрос от юзер-сервиса отправ...

не создаст ли это сложные зависимости сервисов от друг друга? не лучше ли чтобы сервисы вообще в друг друга ходить не могли?

Tuum Daemonia Ayanami
не создаст ли это сложные зависимости сервисов от ...

Никаких зависимостей. Даём запрос "дай мне селект джойн" и отдаем на клиента. Данные нужны этому сервису, при подготовке данных по корзине. Всё логично

Артем
Никаких зависимостей. Даём запрос "дай мне селект ...

для этого 1. сервис корзины должен знать что сервис юзеров это валидный сервис, а не хакер пытающийся получить доступ к данным. Это требует ввода общей валидации сервисами друг друга 2. Нам нужна апи библитека, которая будет предоставлять доступ к сервису корзины, а если сервисов, которые могут к нему обратиться несколько и они на разных яп? писать под каждый яп либу и при изменении изменять ее везде? 3. А если мы решили обновить формат выходных данных на сервисе корзины? обновить одно поле в бд (его имя), то посыпется вся система, ведь под это поле придется переделывать все сервисы, что могут обратиться к сервису корзины

Tuum Daemonia Ayanami
для этого 1. сервис корзины должен знать что серви...

1. Не думаю что это нужно, ведь это открытые данные. 2. Просто один эндпоинт для получения данных, они в любом случае задействованы на сайте, а таким образом мы просто данные подготовим. Ответственность за данные о продуктах отдельно, а о корзине отдельно (за нее отвечает другой сервис) 3. Ну по факту. Только такая проблема будет всегда. Я вообще думаю, что подход с таким разделением не очень хороший. Gateway будет решением, как и что я предлагаю. Тут скорее вопрос в том, как этим всем потом будут пользоваться и зачем. Т.е. gateway может быть избыточен

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

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта