|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Вот есть некий набор микросервисов с набором спецификаций на OpenAPI, который теоретически вроде как призван разрулить бардак, однако на практике у меня возникают некого рода "трудности", а именно: - существует кодогенератор ( https://github.com/swagger-api/swagger-codegen ) который умеет генерировать интерфейсы и DTO, он мне не особо нравится, поскольку хочет чтобы я использовал OffsetDateTime, а у меня несколько иные предпочтения как работать со временем, ну да ладно, вроде как получить то что я ожидаю можно, хоть и через жопу - в OpenAPI можно задекларировать, что на разные статусы можно возвращать разный тип результата, и с этим как-то вообще непонятно что делать, т.е. генератор в интерфейсе лепит ResponseEntity<DTOType>, а OpenAPI-спецификация разрешает в военное возвращать что-то еще (там по большей части другой результат возвращается на 4xx и 5xx и можно извернуться через выкидывание исключения, но как-то вообще криво) - есть эндпойнты с кучей необязательных параметров (например поиск чего-то по набору полей), вот если использовать в качестве клиента jaxrs или feign, то нужно либо все эти параметры таскать за собой, либо наследовать клиентский интерфейс и в нем через default вычленять параметры, которые нужны это так у всех или только у меня? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2020, 09:21 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов- в OpenAPI можно задекларировать, что на разные статусы можно возвращать разный тип результата, и с этим как-то вообще непонятно что делать, т.е. генератор в интерфейсе лепит ResponseEntity<DTOType>, а OpenAPI-спецификация разрешает в военное возвращать что-то еще (там по большей части другой результат возвращается на 4xx и 5xx и можно извернуться через выкидывание исключения, но как-то вообще криво) Видел решение этой проблемы через ручное определение типа объекта. В интерфейсе определяли ResponseEntity<String>, а при получении ответа анализировали код ошибки HTTP и сами из строки формировали объект. https://stackoverflow.com/questions/35797762/how-to-use-resttemplate-with-multiple-response-types/35798228#35798228 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2020, 10:46 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
А что этот feign толковый? Очень на Retrofit похож ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2020, 13:54 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
chpasha А что этот feign толковый? Очень на Retrofit похож ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2020, 15:09 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов, Микросервисы через хттп - это странно. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 07:07 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster Микросервисы через хттп - это странно. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 08:07 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов O_o, на голубиной почте нужно делать? amqp/kafka. Нахрена соединение поднимать на каждое сообщение? Это же дорохо. Ну и прочие pub/sub и каналы обмена как делать на хттп? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 08:40 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster amqp/kafka. Нахрена соединение поднимать на каждое сообщение? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 09:08 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов У меня есть запрос (не команда и не событие), ответ на который я хочу получить здесь и сейчас amqp умеет так делать тоже. Андрей Панфилов складывать в условно персистентное хранилище? rabbitmq, например, это - брокер сообщений, а не хранилище. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 09:37 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов зачем Ну, например, чтобы не просрать запрос, пока http шляпа делает рестарт. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 10:31 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster Андрей Панфилов У меня есть запрос (не команда и не событие), ответ на который я хочу получить здесь и сейчас amqp умеет так делать тоже. crutchmaster Ну, например, чтобы не просрать запрос, пока http шляпа делает рестарт. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 11:57 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster Андрей Панфилов O_o, на голубиной почте нужно делать? amqp/kafka. Нахрена соединение поднимать на каждое сообщение? Это же дорохо. Ну и прочие pub/sub и каналы обмена как делать на хттп? кафка головного мозга подоспела (это не к тебе лично это мысли вслух) юзать надо то что надо а не кафку всегда везде. если тебе нужны синхронные вызовы и ты поверх кафки начнешь колхозить костылятину, то уж лучше хттп или любой другой формат рпц. имхо. есть распределение где асинхронка - там очереди или какие нибудь ящики, если синхронка то - юзай синхронку а не сову на кактус натягивай. зы. во как я заговорил :) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 12:02 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Я не понимаю каким образом мы в топик втащили Кафку? Какой был информационный повод для этого? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 12:08 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
mayton Я не понимаю каким образом мы в топик втащили Кафку? Какой был информационный повод для этого? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 12:24 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
andreykaT там очереди или какие нибудь ящики, если синхронка то - юзай синхронку Чем принципиально брокер сообщений хуже этой вашей синхронки с хттп, когда каждый сам себе брокер? Нужен будет балансировщик, также притяните сюда nginx и какая в *опу разница в итоге? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 12:43 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов совершенно не означает что вызов действительно синхронный, т.е. никаких контрактов для отвечающей стороны здесь не появляется. А зачем вам вообще какие-то гарантии, если данным отношение типа "Ну просрали и просрали запрос, что с того?" Андрей Панфилов А ответ на запрос, который "не просрали", спустя минуту мне уже не нужен. Так никто не мешает брокеру его дропнуть через n сек в очереди. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 12:46 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster А зачем вам вообще какие-то гарантии, если данным отношение типа "Ну просрали и просрали запрос, что с того?" ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 13:05 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster andreykaT там очереди или какие нибудь ящики, если синхронка то - юзай синхронку Чем принципиально брокер сообщений хуже этой вашей синхронки с хттп, когда каждый сам себе брокер? Нужен будет балансировщик, также притяните сюда nginx и какая в *опу разница в итоге? тем что нгиникс по-сути тот же брокер, только синхронный. разница в том что если тебе надо формат взаимодействия запрос-ответ_на_запрос, то твоя кафка будет как пятая нога собаке. вообще, есть 4 основных формата интеграции сервисов - очереди, ремот-процедур-кол, бд и файлы (что имхо по-сути бд). это НЕ только кафка и НЕ только месседжинг. как вкарячивают очереди и асинхронку там где она не нужна я видел. слава Майтону сам так не делал там где это действительно НЕ НАДО. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 13:06 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster Андрей Панфилов зачем Ну, например, чтобы не просрать запрос, пока http шляпа делает рестарт. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 13:19 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp как можно синхронно просрать запрос? Дайте пример! ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 13:28 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов PetroNotC Sharp как можно синхронно просрать запрос? Дайте пример! Ну тут как в анекдоте: С моей стороны пули вылетают! Проблема в принимающей стороне! <:o) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 14:06 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster Андрей Панфилов совершенно не означает что вызов действительно синхронный, т.е. никаких контрактов для отвечающей стороны здесь не появляется. А зачем вам вообще какие-то гарантии, если данным отношение типа "Ну просрали и просрали запрос, что с того?" Андрей Панфилов А ответ на запрос, который "не просрали", спустя минуту мне уже не нужен. Так никто не мешает брокеру его дропнуть через n сек в очереди. просрать могут все, вопрос что ты будешь делать когда узнаешь что просрал. ну например, ничего или ретрай или еще кучи всего. зависит от задачи и требований. это в принципе для любого решения так ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 15:26 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp crutchmaster пропущено... Ну, например, чтобы не просрать запрос, пока http шляпа делает рестарт. тоже интересно. может типа "не достучался потому что занят был"? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 15:27 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов PetroNotC Sharp как можно синхронно просрать запрос? Дайте пример! - ну для этого есть ACKNOWLEDGE ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 15:45 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
В топике - все правы. Но архитектурно, когда мы рассматриваем системы на базе очередей нам надо предусмотреть больше кейсов чем при синхронном вызове удалённого сервиса. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 15:52 |
|
|
start [/forum/topic.php?fid=59&msg=39998660&tid=2120626]: |
0ms |
get settings: |
20ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
53ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
513ms |
get tp. blocked users: |
1ms |
others: | 333ms |
total: | 951ms |
0 / 0 |