|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
andreykaT А зачем асинхронную технологию натягивать на синхронные вызовы? Что такое "асинхронная технология"? Вся сеть асинхронна по своей сути. Еще раз объяснить, что в amqp при rpc происходит по сути тоже самое, что и http, только с участием промежуточного сервака? Хз что вы прицепились к "синхронно/асинхронно", сейчас даже ветвление в процессоре асинхронное. Прицепились бы к промежуточному серваку, например, к ерлангу или я не знаю. Обидно, за уровень срача, честное слово. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 07:30 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster Понятно. У меня с 2гб ram на дохлой виртуалке 20к умеет, у них на крутом железе 30к кое-как. Или что-то у них с руками или ты что-то недоговариваешь. ... Ну если нихрена не делать, то можно хоть миллион rqs делать, вопросов нет. Как же так... вы постоянно топили, что в очередях сообщения не просираются, а в REST какие-то невообразимые накладные расходы на транспорт, а тут выясняется, что если настроить очередь так, чтобы сообщения в очереди действительно не просирались, то накладные расходы в REST таковы, что нужно сделать каскад из 10 нжинксов, чтобы получить такой же throughput как у RabbitMQ, вот тут тоже эксперты по RabbitMQ выдают "рекомендации" : - Use transient messages - Split your queues over different cores - Disable manual acks and publish confirms - Avoid multiple nodes (HA) Из всего прочитанного я сделал следующий вывод: у RabbitMQ есть два режима работы: - терять сообщения, в этом случае оно хоть как-то к REST приближается, но из-за request/reply нужно все делить на 2 - тормозить ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 08:23 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster andreykaT А зачем асинхронную технологию натягивать на синхронные вызовы? Что такое "асинхронная технология"? Вся сеть асинхронна по своей сути. Еще раз объяснить, что в amqp при rpc происходит по сути тоже самое, что и http, только с участием промежуточного сервака? Хз что вы прицепились к "синхронно/асинхронно", сейчас даже ветвление в процессоре асинхронное. Прицепились бы к промежуточному серваку, например, к ерлангу или я не знаю. Обидно, за уровень срача, честное слово. мне нравится здесь описание: https://www.reactivemanifesto.org/ на мой взгляд суть в том что твоя система должна ОТВЕЧАТЬ скажем так особенностям работы твоей фигни. если отвечает то ок. если нет - то сова на глобусе. ты так и не сказал в чем проблема рпц против очереди? особенно там где рпц решает задачу лучше очереди. ты же предлагаешь делать суть-рпц поверх очереди. вопрос - ЗОЧЕМ? не ну ты конечно молодец если построил систему где рпц нет. а если есть? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 09:45 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
особенно.. если учесть (я за твои аббревиатуры не очень в курсе, сорян), что та же кафка построена на тупом поллинге и мэйлбоксах. типа у тя есть база, в эту базу один по рпц фигачит данные, другой по рпц ТУПО полит базу и выгребает если есть чо. )) а - асинхронность. о - очереди. тьфу. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 09:48 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов то накладные расходы в REST таковы, что нужно сделать каскад из 10 нжинксов, чтобы получить такой же throughput как у RabbitMQ Субъективщина. И я хз, чем и что меряли пацаны с тестами хттп серваков и что у них там за хттп, может они долбят свои серваки по одному tcp соединению, а потом рисуют 600k rqs. Андрей Панфилов терять сообщения Даже без durable очередей это по надёжности лучше, чем хттп напрямую, хотя бы в сценарии, когда делается рестарт сервиса. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 09:50 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
а в чем проблема рестарта сервиса? ну ты дернул сервис он не ответил ты у себя знаешь что что-то пошло не так. точно так же кафка может быть напрмер в дауне. сильно разница большая? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 09:53 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
andreykaT ты так и не сказал в чем проблема рпц против очереди? особенно там где рпц решает задачу лучше очереди. ты же предлагаешь делать суть-рпц поверх очереди. вопрос - ЗОЧЕМ? Я уже говорил зочем. Для балансировки нагрузки, резервирования сервисов, непрерывной интеграции. Ну, как бы пока можно не делать, но всё равно к этому же придёшь и будет тоже самое, только с костылями на nginx. Зочем? Если пока всё ок, мне хватает, ну ладно, понятно, ничего против не имею. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 09:56 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
andreykaT а в чем проблема рестарта сервиса? ну ты дернул сервис он не ответил В том что сервис должен отвечать? andreykaT точно так же кафка может быть напрмер в дауне. По-серьёзному брокер работает как кластер, потому что он вообще падать не должен. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 09:59 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов, Кстати, у меня очереди durable. И 20k rqs на говне. Я не знаю, что там с этими пацанами и их бенчем. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 10:02 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster andreykaT а в чем проблема рестарта сервиса? ну ты дернул сервис он не ответил В том что сервис должен отвечать? andreykaT точно так же кафка может быть напрмер в дауне. По-серьёзному брокер работает как кластер, потому что он вообще падать не должен. точно так же есть континуус интегрейшн когда мешок сервисов работают в кластере за балансером и один упавший другие не заметит. это по-серьезному. а по-не-серьезному твой кролик точно так же может завалиться а ты будешь логи неделю читать че не так. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 10:10 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
...да, я не топлю за отказ от очередей. я топлю за осознанность применения той или иной технологии. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 10:16 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
andreykaT точно так же есть континуус интегрейшн когда мешок сервисов работают в кластере за балансером Да. Я про это и говорю. andreykaT ...да, я не топлю за отказ от очередей. я топлю за осознанность применения той или иной технологии. Так в чём осознанность микросервисов на хттп? Что завалится и хер с ним? Просрали запрос и хер с ним? Ну да, потому притащат nginx, прикостылят недоочереди где-нибудь внутри или сбоку, точки обмена, топики, сделают чтобы можно было по одному соединению всё гонять и получится тот же amqp, только поверх хттп. Мне вот говорят "нада синхронно, это же надо сделать, это же костыли писать", а остальное типа не надо писать или так сойдёт, или это в упор игнорируют (зато посмотрите, какие у нас бенчи!) Пока все выглядит так, что диды писали на хттп, мы пишем и ты пиши, т.е. осознанность уровня дельфистов у которых есть формочки, им веб - сложна, потому что там нет формочек, с другой стороны в вебе есть доставка контента, а у них нет, но обновлялку бинарников им писать не сложна. Может я не прав, конечно, мне просто интересно. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 10:36 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Почему завалится? Пришла ошибка - сделали повтор, балансировшик перекинул на соседний работающий узел, пользователь получил ответ (разумеется чуть дольше, чем без ошибок/перезагрузок) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 10:51 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster andreykaT точно так же есть континуус интегрейшн когда мешок сервисов работают в кластере за балансером Да. Я про это и говорю. andreykaT ...да, я не топлю за отказ от очередей. я топлю за осознанность применения той или иной технологии. Так в чём осознанность микросервисов на хттп? Что завалится и хер с ним? Просрали запрос и хер с ним? Ну да, потому притащат nginx, прикостылят недоочереди где-нибудь внутри или сбоку, точки обмена, топики, сделают чтобы можно было по одному соединению всё гонять и получится тот же amqp, только поверх хттп. Мне вот говорят "нада синхронно, это же надо сделать, это же костыли писать", а остальное типа не надо писать или так сойдёт, или это в упор игнорируют (зато посмотрите, какие у нас бенчи!) Пока все выглядит так, что диды писали на хттп, мы пишем и ты пиши, т.е. осознанность уровня дельфистов у которых есть формочки, им веб - сложна, потому что там нет формочек, с другой стороны в вебе есть доставка контента, а у них нет, но обновлялку бинарников им писать не сложна. Может я не прав, конечно, мне просто интересно. во-первых, в зависимости от задачи очень часто это ДОПУСТИМО потерять часть данных. во-вторых, ретрай-паттерны рулят. причем для всего, для очередей в том числе. это если тебе важны данные. кстати, диды сервисы интегрировали не через хттп там какая то дичь была через которую севрсиы (сервлеты) могли синхронно общаться внутри контейнера. вообще без всяких хттп. томкат жетти вебсфера и прочий исторический мусор. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 11:34 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster Андрей Панфилов то накладные расходы в REST таковы, что нужно сделать каскад из 10 нжинксов, чтобы получить такой же throughput как у RabbitMQ Субъективщина. И я хз, чем и что меряли пацаны с тестами хттп серваков и что у них там за хттп, может они долбят свои серваки по одному tcp соединению, а потом рисуют 600k rqs. Андрей Панфилов терять сообщения Даже без durable очередей это по надёжности лучше, чем хттп напрямую, хотя бы в сценарии, когда делается рестарт сервиса. Если вам не нравятся результаты тестов, которые я привел, можете сделать свои, благо и там и там методика и исходный код опубликованы. Но есть мнение что особо не поможет, о том что в RabbitMQ наступают проблемы с latency при потоке в 30-40 тысяч сообщений в секунду, пишут даже на сайте RabbitMQ: https://www.rabbitmq.com/blog/2020/06/18/cluster-sizing-case-study-mirrored-queues-part-1/ ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2020, 08:48 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
andreykaT во-первых, в зависимости от задачи очень часто это ДОПУСТИМО потерять часть данных. Ладно, я понял. Не всем критична доставка, очереди, точки обмена и прочее. Где-то можно жить без этого. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2020, 11:49 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster Ладно, я понял. Не всем критична доставка, очереди, точки обмена и прочее. Где-то можно жить без этого. вот мы подключаемся к RabbitMQ, я так полагаю что в приложении нужен некий пул этих персистентных соединений - мы же не хотим, чтобы это было медленно как в HTTP/1.0, но когда мы посылаем сообщение из определенного места в коде, у нас есть желание, чтобы ответ в это же место и пришел, поэтому мы должны создать временную очередь, в которую должен приходить ответ и которую слушать будем только мы. Эта очередь должна быть всегда уникальна и к соединению из пула ее ну никак привязывать нельзя, в противном случае на таймаутах другие вызовы будут получать наши ответы вместо своих, т.е. прежде чем послать сообщение в RabbitMQ мы должны дополнительно вызывать некий RPC, который в RabbitMQ создаст новую очередь (кстати, кто должен чистить старые?) - вам не кажется, что в этом месте появляются дополнительные расходы, соизмеримые с установлением соединения по HTTP? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2020, 20:09 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфиловну очевидно: весь контекст сериализовывать , а потом рассказывать про low coupling Андрей, Сонтент ? Вы против low coupling ? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2020, 11:36 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmasterВся сеть асинхронна по своей сути. Уважаемый crutchmaster, дайте ссылку на объяснение где почитать. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2020, 11:40 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей, Контент ? Конечно. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2020, 11:43 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
mirudom дайте ссылку на объяснение где почитать Это не очевидно? Ты отправляешь вызов по сети и ждешь, пока придёт ответ. Пакеты тебе могут притди не один за другим, возможно потребуется повторная передача, по этому же интерфейсу идут пакеты для других приложений и т.д и т.п. Синхронно (a->b->c) работает только процессор и то не всегда. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 09:15 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster, Http это синхронный протокол. Мне жаль. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 09:27 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов вот мы подключаемся к RabbitMQ, я так полагаю что в приложении нужен некий пул этих персистентных соединений Зачем? По соединению за сообщение как в апаче? Андрей Панфилов вам не кажется Мне кажется вы наделали каких-то далеко идущих выводов на ровном месте исходя из фантазий. Понимаю, что хипсторы задолбали со своей кафкой, но лучше не быть предвзятым. Андрей Панфилов Эта очередь должна быть всегда уникальна и к соединению из пула ее ну никак привязывать нельзя Можно. Таймауты работают на прослушивание созданной очереди, каким боком тут соединение? Оно живёт своей жизнью, передаёт данные туда-сюда. послать сообщение в RabbitMQ мы должны дополнительно вызывать некий RPC, который в RabbitMQ создаст новую очередь (кстати, кто должен чистить старые?) Да. Посылается команда создать временную очередь, подписывается слушатель (коллбек) на то, что оттуда придёт, отсылается RPC, где указывается эта самая очередь. Старые удаляются рабитом после успешной доставки сообщения. вам не кажется, что в этом месте появляются дополнительные расходы, соизмеримые с установлением соединения по HTTP? Отправить 100 байт туда-сюда по поднятому соединению несоизмеримо с установкой нового? Ну хз. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 09:27 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, Давай определимся для начала, что такое "синхронный", что такое "асинхронный". Вот: https://ru.wikipedia.org/wiki/Синхронный_способ_передачи_данных Синхронный протокол. Причём тут tcp? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 09:28 |
|
|
start [/forum/topic.php?fid=59&msg=39999628&tid=2120626]: |
0ms |
get settings: |
24ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
43ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
462ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 580ms |
0 / 0 |