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

это так у всех или только у меня?
...
Рейтинг: 0 / 0
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
    #39998225
ramzestein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов- в 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
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
    #39998320
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что этот feign толковый? Очень на Retrofit похож
...
Рейтинг: 0 / 0
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
    #39998356
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpasha
А что этот feign толковый? Очень на Retrofit похож
У меня изначальное желание такое, чтобы то что касалось протокола взаимодействия жило в отдельном модуле, а серверная и клиентская части ее бы использовали, например от одного только того, что в разных спецификациях используются одни и те же названия DTO и где-то они разные, а где-то одинаковые, у меня уже некисло бомбит, а если использовать retrofit, то оно уже само по себе подразумевает независимую клиентскую часть, поэтому думал только в сторону jaxrs и spring, вот feign спринговые аннотации умеет.
...
Рейтинг: 0 / 0
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
    #39998594
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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


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