Гость
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI? / 25 сообщений из 265, страница 1 из 11
14.09.2020, 09:21
    #39998198
Андрей Панфилов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
Вот есть некий набор микросервисов с набором спецификаций на OpenAPI, который теоретически вроде как призван разрулить бардак, однако на практике у меня возникают некого рода "трудности", а именно:
- существует кодогенератор ( https://github.com/swagger-api/swagger-codegen ) который умеет генерировать интерфейсы и DTO, он мне не особо нравится, поскольку хочет чтобы я использовал OffsetDateTime, а у меня несколько иные предпочтения как работать со временем, ну да ладно, вроде как получить то что я ожидаю можно, хоть и через жопу
- в OpenAPI можно задекларировать, что на разные статусы можно возвращать разный тип результата, и с этим как-то вообще непонятно что делать, т.е. генератор в интерфейсе лепит ResponseEntity<DTOType>, а OpenAPI-спецификация разрешает в военное возвращать что-то еще (там по большей части другой результат возвращается на 4xx и 5xx и можно извернуться через выкидывание исключения, но как-то вообще криво)
- есть эндпойнты с кучей необязательных параметров (например поиск чего-то по набору полей), вот если использовать в качестве клиента jaxrs или feign, то нужно либо все эти параметры таскать за собой, либо наследовать клиентский интерфейс и в нем через default вычленять параметры, которые нужны

это так у всех или только у меня?
...
Рейтинг: 0 / 0
14.09.2020, 10:46
    #39998225
ramzestein
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
Андрей Панфилов- в OpenAPI можно задекларировать, что на разные статусы можно возвращать разный тип результата, и с этим как-то вообще непонятно что делать, т.е. генератор в интерфейсе лепит ResponseEntity<DTOType>, а OpenAPI-спецификация разрешает в военное возвращать что-то еще (там по большей части другой результат возвращается на 4xx и 5xx и можно извернуться через выкидывание исключения, но как-то вообще криво)
Видел решение этой проблемы через ручное определение типа объекта. В интерфейсе определяли ResponseEntity<String>, а при получении ответа анализировали код ошибки HTTP и сами из строки формировали объект. https://stackoverflow.com/questions/35797762/how-to-use-resttemplate-with-multiple-response-types/35798228#35798228
...
Рейтинг: 0 / 0
14.09.2020, 13:54
    #39998320
chpasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
А что этот feign толковый? Очень на Retrofit похож
...
Рейтинг: 0 / 0
14.09.2020, 15:09
    #39998356
Андрей Панфилов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
chpasha
А что этот feign толковый? Очень на Retrofit похож
У меня изначальное желание такое, чтобы то что касалось протокола взаимодействия жило в отдельном модуле, а серверная и клиентская части ее бы использовали, например от одного только того, что в разных спецификациях используются одни и те же названия DTO и где-то они разные, а где-то одинаковые, у меня уже некисло бомбит, а если использовать retrofit, то оно уже само по себе подразумевает независимую клиентскую часть, поэтому думал только в сторону jaxrs и spring, вот feign спринговые аннотации умеет.
...
Рейтинг: 0 / 0
15.09.2020, 07:07
    #39998594
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
Андрей Панфилов,

Микросервисы через хттп - это странно.
...
Рейтинг: 0 / 0
15.09.2020, 08:07
    #39998596
Андрей Панфилов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
crutchmaster
Микросервисы через хттп - это странно.
O_o, на голубиной почте нужно делать?
...
Рейтинг: 0 / 0
15.09.2020, 08:40
    #39998601
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
Андрей Панфилов
O_o, на голубиной почте нужно делать?

amqp/kafka. Нахрена соединение поднимать на каждое сообщение? Это же дорохо. Ну и прочие pub/sub и каналы обмена как делать на хттп?
...
Рейтинг: 0 / 0
15.09.2020, 09:08
    #39998606
Андрей Панфилов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
crutchmaster
amqp/kafka. Нахрена соединение поднимать на каждое сообщение?
У меня есть запрос (не команда и не событие), ответ на который я хочу получить здесь и сейчас, а не завтра и там, зачем мне этот запрос (и ответ) складывать в условно персистентное хранилище?
...
Рейтинг: 0 / 0
15.09.2020, 09:37
    #39998610
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
Андрей Панфилов
У меня есть запрос (не команда и не событие), ответ на который я хочу получить здесь и сейчас

amqp умеет так делать тоже.
Андрей Панфилов
складывать в условно персистентное хранилище?

rabbitmq, например, это - брокер сообщений, а не хранилище.
...
Рейтинг: 0 / 0
15.09.2020, 10:31
    #39998632
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
Андрей Панфилов
зачем

Ну, например, чтобы не просрать запрос, пока http шляпа делает рестарт.
...
Рейтинг: 0 / 0
15.09.2020, 11:57
    #39998660
Андрей Панфилов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
crutchmaster
Андрей Панфилов
У меня есть запрос (не команда и не событие), ответ на который я хочу получить здесь и сейчас

amqp умеет так делать тоже.
Не умеет, просто потому что у вас понятие "умеет" несколько извращенное: от того что в active mq накидали какого-то стремного кода, который для вызывающей стороны выглядит как синхронный вызов, совершенно не означает что вызов действительно синхронный, т.е. никаких контрактов для отвечающей стороны здесь не появляется.

crutchmaster
Ну, например, чтобы не просрать запрос, пока http шляпа делает рестарт.
Ну просрали и просрали запрос, что с того? я же не очко пользователя ставлю. А ответ на запрос, который "не просрали", спустя минуту мне уже не нужен.
...
Рейтинг: 0 / 0
15.09.2020, 12:02
    #39998663
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
crutchmaster
Андрей Панфилов
O_o, на голубиной почте нужно делать?

amqp/kafka. Нахрена соединение поднимать на каждое сообщение? Это же дорохо. Ну и прочие pub/sub и каналы обмена как делать на хттп?

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

зы. во как я заговорил :)
...
Рейтинг: 0 / 0
15.09.2020, 12:08
    #39998670
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
Я не понимаю каким образом мы в топик втащили Кафку? Какой был информационный повод для этого?
...
Рейтинг: 0 / 0
15.09.2020, 12:24
    #39998677
Андрей Панфилов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
mayton
Я не понимаю каким образом мы в топик втащили Кафку? Какой был информационный повод для этого?
Ну все просто же: в микросервисах со стороны HTTP офигеть какой бардак (ну, например, я так более-менее приемлемого ответа на свой вопрос не получил, а то что у меня спецификации кривые я и сам знаю, однако в SOAP такого не было - там xs:any довольно редкий зверь и все знают что от него попахивает), поэтому нужно использовать для взаимодействия протоколы, которые для этого не предназначены
...
Рейтинг: 0 / 0
15.09.2020, 12:43
    #39998690
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
andreykaT
там очереди или какие нибудь ящики, если синхронка то - юзай синхронку

Чем принципиально брокер сообщений хуже этой вашей синхронки с хттп, когда каждый сам себе брокер? Нужен будет балансировщик, также притяните сюда nginx и какая в *опу разница в итоге?
...
Рейтинг: 0 / 0
15.09.2020, 12:46
    #39998692
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
Андрей Панфилов
совершенно не означает что вызов действительно синхронный, т.е. никаких контрактов для отвечающей стороны здесь не появляется.

А зачем вам вообще какие-то гарантии, если данным отношение типа "Ну просрали и просрали запрос, что с того?"
Андрей Панфилов
А ответ на запрос, который "не просрали", спустя минуту мне уже не нужен.

Так никто не мешает брокеру его дропнуть через n сек в очереди.
...
Рейтинг: 0 / 0
15.09.2020, 13:05
    #39998706
Андрей Панфилов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
crutchmaster
А зачем вам вообще какие-то гарантии, если данным отношение типа "Ну просрали и просрали запрос, что с того?"
Вы, судя по всему, разницы между запросом и данными не видите, к тому же еще думаете, что кафка данные не просирает
...
Рейтинг: 0 / 0
15.09.2020, 13:06
    #39998708
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
crutchmaster
andreykaT
там очереди или какие нибудь ящики, если синхронка то - юзай синхронку

Чем принципиально брокер сообщений хуже этой вашей синхронки с хттп, когда каждый сам себе брокер? Нужен будет балансировщик, также притяните сюда nginx и какая в *опу разница в итоге?

тем что нгиникс по-сути тот же брокер, только синхронный.

разница в том что если тебе надо формат взаимодействия запрос-ответ_на_запрос, то твоя кафка будет как пятая нога собаке.

вообще, есть 4 основных формата интеграции сервисов - очереди, ремот-процедур-кол, бд и файлы (что имхо по-сути бд).
это НЕ только кафка и НЕ только месседжинг.

как вкарячивают очереди и асинхронку там где она не нужна я видел. слава Майтону сам так не делал там где это действительно НЕ НАДО.
...
Рейтинг: 0 / 0
15.09.2020, 13:19
    #39998727
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
crutchmaster
Андрей Панфилов
зачем

Ну, например, чтобы не просрать запрос, пока http шляпа делает рестарт.
как можно синхронно просрать запрос? Дайте пример!
...
Рейтинг: 0 / 0
15.09.2020, 13:28
    #39998740
Андрей Панфилов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
PetroNotC Sharp
как можно синхронно просрать запрос? Дайте пример!
ну как-как... берете и начинаете использовать active mq с костылями, отправляете туда сообщение, принимающая сторона сообщение прочесть не смогла, на вашей стороне вместо сообщения об ошибке возникает таймаут следующим этапом будет: чтобы получать сообщения об ошибках нам нужна еще DLQ, которую нужно обрабатывать, а мы всего-то хотели запрос по HTTP пульнуть
...
Рейтинг: 0 / 0
15.09.2020, 14:06
    #39998777
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
Андрей Панфилов
PetroNotC Sharp
как можно синхронно просрать запрос? Дайте пример!
ну как-как... берете и начинаете использовать active mq с костылями, отправляете туда сообщение, принимающая сторона сообщение прочесть не смогла, на вашей стороне вместо сообщения об ошибке возникает таймаут следующим этапом будет: чтобы получать сообщения об ошибках нам нужна еще DLQ, которую нужно обрабатывать, а мы всего-то хотели запрос по HTTP пульнуть


Ну тут как в анекдоте:

С моей стороны пули вылетают!
Проблема в принимающей стороне!

<:o)
...
Рейтинг: 0 / 0
15.09.2020, 15:26
    #39998839
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
crutchmaster
Андрей Панфилов
совершенно не означает что вызов действительно синхронный, т.е. никаких контрактов для отвечающей стороны здесь не появляется.

А зачем вам вообще какие-то гарантии, если данным отношение типа "Ну просрали и просрали запрос, что с того?"
Андрей Панфилов
А ответ на запрос, который "не просрали", спустя минуту мне уже не нужен.

Так никто не мешает брокеру его дропнуть через n сек в очереди.

просрать могут все, вопрос что ты будешь делать когда узнаешь что просрал. ну например, ничего или ретрай или еще кучи всего. зависит от задачи и требований. это в принципе для любого решения так
...
Рейтинг: 0 / 0
15.09.2020, 15:27
    #39998840
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
PetroNotC Sharp
crutchmaster
пропущено...

Ну, например, чтобы не просрать запрос, пока http шляпа делает рестарт.
как можно синхронно просрать запрос? Дайте пример!

тоже интересно. может типа "не достучался потому что занят был"?
...
Рейтинг: 0 / 0
15.09.2020, 15:45
    #39998852
Kachalov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
Андрей Панфилов
PetroNotC Sharp
как можно синхронно просрать запрос? Дайте пример!
ну как-как... берете и начинаете использовать active mq с костылями, отправляете туда сообщение, принимающая сторона сообщение прочесть не смогла, на вашей стороне вместо сообщения об ошибке возникает таймаут

- ну для этого есть ACKNOWLEDGE
...
Рейтинг: 0 / 0
15.09.2020, 15:52
    #39998855
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
В топике - все правы. Но архитектурно, когда мы рассматриваем системы на базе очередей нам
надо предусмотреть больше кейсов чем при синхронном вызове удалённого сервиса.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI? / 25 сообщений из 265, страница 1 из 11
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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