powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
25 сообщений из 265, страница 2 из 11
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
    #39998927
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
В том то и дело, что про очереди разговоров в ТЗ не было.
Либо они нужны, либо это оверхед.
ПолуОчередей не бывает.
...
Рейтинг: 0 / 0
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
    #39998950
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalov
- ну для этого есть ACKNOWLEDGE
Для чего "для этого"? В случае взаимодействия по HTTP существует три возможных исхода:
- какой-то вменяемый ответ
- ошибка
- таймаут (фактически ошибка, но после ее возникновения состояние системы становится непонятным)

асинхронное взаимодействие (в т.ч. использование очередей) в первую очередь направлено на борьбу с таймаутами, потому что компенсировать в коде таймауты довольно трудоемко, все остальное в духе "ну мы там можем количество подписчиков регулировать и тем самым куда-то масштабироваться" - это свойство асинхронного взаимодействия, а не jms, amqp и прочих стремных аббревиатур, единственное что здесь еще играет хоть какую-то существенную роль - это возможность персистентных соединений, а заявления в духе:
crutchmaster
Ну и прочие pub/sub и каналы обмена как делать на хттп?
вообще ни в какие ворота: вот CometD вполне себе работает через HTTP, вообщем не кафкой единой.

Ну так к чему это все... ACK в очередях предназначен для того, чтобы пометить что сообщение было как-то обработано, отправителю от этого ACK не тепло, ни холодно
...
Рейтинг: 0 / 0
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
    #39998977
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов
Kachalov
- ну для этого есть ACKNOWLEDGE
Для чего "для этого"? В случае взаимодействия по HTTP существует три возможных исхода:
- какой-то вменяемый ответ
- ошибка
- таймаут (фактически ошибка, но после ее возникновения состояние системы становится непонятным)

- "для этого", т е для получения "вменяемого ответа" что сообщение доставлено, а то и успешно обработано (CLIENT_ACKNOWLEDGE);
- в мессаджинге тоже возможно синхронное взаимодействие (и таймаут);
- не стоит противопоставлять мессаджинг и HTTP, так как возможен мессаджинг и через HTTP, наверное лучше использовать термин REST
...
Рейтинг: 0 / 0
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
    #39998980
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кейс. У меня есть юзер он делает рест запрос к сервису. Сервису надо юзера авторизовать а именно с его кремами сходить на другой сервис и спросить его права потом согласно прав построить ответ и внутри зттп отдать. Как будем очередь прикручивать?
...
Рейтинг: 0 / 0
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
    #39998985
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT
Кейс. У меня есть юзер он делает рест запрос к сервису. Сервису надо юзера авторизовать а именно с его кремами сходить на другой сервис и спросить его права потом согласно прав построить ответ и внутри зттп отдать. Как будем очередь прикручивать?
ну очевидно: весь контекст сериализовывать, а потом рассказывать про low coupling
...
Рейтинг: 0 / 0
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
    #39998986
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalov
- "для этого", т е для получения "вменяемого ответа" что сообщение доставлено, а то и успешно обработано (CLIENT_ACKNOWLEDGE);
Давайте так: я уверен на 100%, что ACK - это фишка консумера, а не продюсера, если вы так уверены, что при ACK что-то прилетает продюсеру (интересен сам механизм доставки сообщений продюсеру, если он ничего не слушает ), то можете привести в подтверждение правоты либо ссылку на документацию, либо на реализацию.
Kachalov
- в мессаджинге тоже возможно синхронное взаимодействие (и таймаут);
исправляю:

в мессаджинге тоже возможно синхронное взаимодействие через жопу .
...
Рейтинг: 0 / 0
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
    #39998993
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ключевое выделено. Конечно можно да. И шаблоны есть ла. Но вот какие это шаблоны жирно написано
...
Рейтинг: 0 / 0
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
    #39999004
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Учитывая релятивизм - мы обречены строить мессенджинговые системы между планетами и галлактиками
в следующие сотню-тысячу лет.

Синхронизм не будет там работать. Слишком велик лаг.
...
Рейтинг: 0 / 0
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
    #39999034
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов
Давайте так: я уверен на 100%, что ACK - это фишка консумера, а не продюсера, если вы так уверены, что при ACK что-то прилетает продюсеру (интересен сам механизм доставки сообщений продюсеру, если он ничего не слушает ), то можете привести в подтверждение правоты либо ссылку на документацию, либо на реализацию.

- да, я не правильно понял проблему, подумал что речь идет о таймауте при обработке запроса получателем и о том что брокер не знает статус сообщения, т е не гарантируется доставка и обработка запроса слушателем. Но и при необходимости доставки уведомления от консумера продюсеру существует решение - это паттерн Request-Reply , который реализуют через временную очередь, которая создается продюсером и ReplyTo ( пример , а в Spring Integration это еще проще)

Андрей Панфилов
Kachalov
- в мессаджинге тоже возможно синхронное взаимодействие (и таймаут)
исправляю:
в мессаджинге тоже возможно синхронное взаимодействие через жопу .

- не знаю что там у кого с жопой, но это рабочий механизм, причем реализованный не только в некоторых конкретных брокерах, но и на уровне API в Spring Integration (например в DirectChannel). Вероятно это кому то нужно.
...
Рейтинг: 0 / 0
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
    #39999078
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalov
но это рабочий механизм, причем реализованный не только в некоторых конкретных брокерах, но и на уровне API в Spring Integration (например в DirectChannel). Вероятно это кому то нужно.

как я уже пояснял другому оратору ( 22197194 ) вы также не неправильно понимаете слово "работает": ваше "вероятно это кому то нужно" возникает когда горе-архитекторы впаривают заказчику без должной проработки откровенную дичь, а потом пытаются мужественно преодолевать трудности:
- в Spring Integration (в Apache Camel тоже) оно есть просто потому, что это реализация EIP
- в EIP эту модель взаимодействия описали просто потому что она существует в JMS
- в JMS она появилась потому что на момент создания спецификации существовали вендорские реализации с поддержкой функциональности:Java™ Message ServiceJMS provides the JMSReplyTo message header field for specifying the
Destination where a reply to a message should be sent. The JMSCorrelationID
header field of the reply can be used to reference the original request. See
Section 3.4, “Message Header Fields” for more information.

In addition, JMS provides a facility for creating temporary queues and topics
that can be used as a unique destination for replies.

There are many styles of request/reply supported by enterprise messaging
products. From simple ‘one message request yields a one message reply’ to
‘one message request yields streams of messages from multiple respondents’.
Rather than architect a specific JMS request/reply abstraction, JMS provides
the basic facilities on which many can be built.

For convenience, JMS defines request/reply helper classes (classes written
using JMS) for both the PTP and Pub/Sub domains that implement a basic
form of request/reply. JMS providers and clients may provide more specialized
implementations. - а в вендорских реализациях оно было потому что иначе без этого невозможно было впарить клиенту

только какое отношение request/reply имеет к микросервисам? Адепты микросервисов топят за некий призрачный loose coupling, и при этом втихую реализуют RPC через жопу и умалчивают что это не что иное как temporal coupling, нарушая свои же собственные парадигмы. Зачем все это? У меня короткие идемпотентные запросы, результат которых нужен сейчас, а не когда кто-то там решит его обработать.
...
Рейтинг: 0 / 0
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
    #39999082
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов
оно есть просто потому

- не слишком ли "просто" выходит? Вероятно не самые глупые люди проектировали API и брокеры сообщений

Андрей Панфилов
какое отношение request/reply имеет к микросервисам? Адепты микросервисов топят за некий призрачный loose coupling

- request/reply не отменяет loose coupling, во всяком случае я не вижу тут нарушения этой парадигмы

Андрей Панфилов
Зачем все это? У меня короткие идемпотентные запросы, результат которых нужен сейчас, а не когда кто-то там решит его обработать.

- конкретно Вам возможно и незачем (со своей архитектурой Вы сами разбирайтесь, Вам видней - я отвечал на замечания относительно мессаджинга которые мне показались не справедливыми). Однако можно всегда задать вопрос: что будет с системой если она по каким то причинам начнет медленно обрабатывать запросы (сетевые проблемы, дисковые проблемы, проблемы при работе БД и т д)? Если запросы прибиваются по таймауту, то сколько висящих запросов может накопиться за это время? И не упремся ли мы в какие то лимиты сервера приложений (например по количеству потоков). В этом смысле асинхронный мессаджинг (для которого длительное хранение сообщений в очереди это скорее нештатная, хотя и ожидаемая, операция) позволяет сохранить работоспособность системы не завалив ее внутренними запросами
...
Рейтинг: 0 / 0
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
    #39999085
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalov
- request/reply не отменяет loose coupling, во всяком случае я не вижу тут нарушения этой парадигмы
Ну просвящайтесь чтоли:
Messaging shouldn’t be used for queries
Messaging anti-patterns in event-driven architecture
When is an event not an event?
...
Рейтинг: 0 / 0
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
    #39999087
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalov
Однако можно всегда задать вопрос: что будет с системой если она по каким то
причинам начнет медленно обрабатывать запросы (сетевые проблемы, дисковые проблемы, проблемы
при работе БД и т д)? Если запросы прибиваются по таймауту, то сколько висящих запросов может
накопиться за это время?


Этот вопрос мне кажется риторическим. Вы его можете адресовать совершенно к любой архитектуре даже
самой дорогой и покрытой требованиями по NFR. Это нештатная ситуация и не бизнес-кейс.
...
Рейтинг: 0 / 0
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
    #39999089
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalov
- не слишком ли "просто" выходит? Вероятно не самые глупые люди проектировали API и брокеры сообщений
Ну вы определитесь кто на ком стоял: request/reply - это фишка JMS, которая прямо в спецификации описана, если мы принимаем за истину, что JMS проектировали умные люди, то посмотрев на кафку, мы заметим, что там "в коробке" этого нет , исходя из этого можно предположить что кафку писали бомжи... или таки просто не стоит предлагать использовать неподходящий паттерн там где это не нужно?
...
Рейтинг: 0 / 0
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
    #39999098
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов
Ну вы определитесь кто на ком стоял: request/reply - это фишка JMS, которая прямо в спецификации описана, если мы принимаем за истину, что JMS проектировали умные люди, то посмотрев на кафку, мы заметим, что там "в коробке" этого нет , исходя из этого можно предположить что кафку писали бомжи... или таки просто не стоит предлагать использовать неподходящий паттерн там где это не нужно?

- message-oriented middleware и соответствующие шаблоны (в частности Request-Reply) появились до JMS
- про бомжей - приписывать собеседнику слова которых он не говорил и на основе их строить какие то обвинения ... (почему то вспомнилось что в этом топике Вы неоднократно упомянули "жопу" и "очко" - понятно, психологическое явление, так называемая "анальная фиксация", я не кисейная барышня, но как то противно)
- если в Кафке чего то нет, то не понятно почему это аргумент. В то время как если где то приложили усилия и реализовали ReplyTo значит стоит подумать зачем
- я не предлагаю Вам ничего (о чем сказал в предыдущем посте), паттерн есть и хоть Вы десять раз повторите слово "жопа" он никуда не денется

Андрей Панфилов
Kachalov
- request/reply не отменяет loose coupling, во всяком случае я не вижу тут нарушения этой парадигмы
Ну просвящайтесь чтоли:
Messaging shouldn’t be used for queries
Messaging anti-patterns in event-driven architecture
When is an event not an event?

- ну сначала расскажите "что ли", что за Бен Моррис такой с горы? Какой то архитектор, по первому образованию "The University of Manchester - Politics and modern history". Может не поленитесь и в двух словах, без этого Бена, изложите почему Request-Reply нарушает low coupling? Или кратко тут никак?

В целом не вижу повода для дискуссии, тем более в стиле "как в пивной". Ну есть паттерн Request-Reply. Можно использовать, можно нет, смотря что за задача. У Вас вообще REST и мессаджинг не используется.
...
Рейтинг: 0 / 0
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
    #39999100
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Kachalov
Однако можно всегда задать вопрос: что будет с системой если она по каким то
причинам начнет медленно обрабатывать запросы (сетевые проблемы, дисковые проблемы, проблемы
при работе БД и т д)? Если запросы прибиваются по таймауту, то сколько висящих запросов может
накопиться за это время?


Этот вопрос мне кажется риторическим. Вы его можете адресовать совершенно к любой архитектуре даже
самой дорогой и покрытой требованиями по NFR. Это нештатная ситуация и не бизнес-кейс.


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

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

Если хттп сервер что-то там не шмог и завис, таймаута не возникает, я так понимаю?
Андрей Панфилов
на вашей стороне вместо сообщения об ошибке

Что-то там возникает, я тоже понимаю, от святого духа, а не от того, что connection refused?
...
Рейтинг: 0 / 0
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
    #39999114
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Учитывая релятивизм - мы обречены строить мессенджинговые системы между планетами и галлактиками
в следующие сотню-тысячу лет.

Синхронизм не будет там работать. Слишком велик лаг.
вы обречены строить Модель ИС.
А модель в ВУЗАХ это упрощенная модель реального мира.
Ключевое слово - упрощенная.
Вы в курсе как управляли луноходом наши водители сидя на земле?
Что было с лагом?)))))
...
Рейтинг: 0 / 0
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
    #39999115
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов
асинхронное взаимодействие (в т.ч. использование очередей) в первую очередь направлено на борьбу с таймаутами

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

У меня запрос - ответ и раббит не как пятая нога. Вообще не вижу никаких проблем и недоумеваю, в чем вы там видите существенную разницу. хттп поднимает соединение, отправляет данные, ждёт ответа, закрывает соединение. С раббитом делается всё абсолютно тоже самое, только соединение не закрывается.
...
Рейтинг: 0 / 0
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
    #39999117
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster,
Таймаут это счетчик времени на клиенте. А не на сервере который завис LOL)))
...
Рейтинг: 0 / 0
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
    #39999118
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster,
> С раббитом делается всё абсолютно тоже самое
= есть слово оверхед в архитектуре. Лишний глюкавый код.
...
Рейтинг: 0 / 0
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
    #39999119
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster,
Асинхронный код всегда сложнее синхронного. Просто по определению.
Как автомат коробка сложнее механической.
...
Рейтинг: 0 / 0
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
    #39999120
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
надо предусмотреть больше кейсов чем при синхронном вызове удалённого сервиса

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


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